PHP Fatal Fehler beim Hochladen / Größe der Bilder
-
11-09-2019 - |
Frage
Ich bin über einen Code, der ein Bild hochladen, wird, um das Bild in den Ordner „die Größe“, die Größe des Bildes, um das Bild in einen anderen Ordner verschieben, löschen Sie dann das Bild von der „Größe ändern“ -Ordner, aber ich m die folgende Störung zu erhalten:
" Fatal error: Erlaubt Speichergröße von 33554432 Bytes erschöpft (versucht 14172 Bytes zuzuteilen) in /home/photogra/public_html/administrator/components/com_gallery/admin.gallery.php auf Leitung 649 „
Die Bilder sind nicht einmal groß! (ZB. 265KB)
Hier ist der Code verwende ich (mit den Zeilennummern):
635 move_uploaded_file($_FILES['image']['tmp_name'],$mainframe->getCfg( 'absolute_path' ) ."/virtualgallery/images/resize/$newname");
636
637 /* resize images - width 600px */
638 $docRoot = $GLOBALS['mosConfig_absolute_path'];
639 $pathToImages = $docRoot.'/virtualgallery/images/resize/';
640 $pathToThumbs = $docRoot.'/virtualgallery/images/';
641 $thumbHeight = 600;
642
643 $dir = opendir( $pathToImages );
644 while (false !== ($fname = readdir( $dir ))) {
645 $info = pathinfo($pathToImages . $fname);
646 if ( strtolower($info['extension']) == 'jpg' ) {
647 $img = imagecreatefromjpeg( "{$pathToImages}{$fname}" );
648 $width = imagesx( $img );
649 $height = imagesy( $img );
650 $new_width = floor( $width * ( $thumbHeight / $height ) );
651 $new_height = $thumbHeight;
652 $tmp_img = imagecreatetruecolor( $new_width, $new_height );
653 imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );
654 imagejpeg( $tmp_img, "{$pathToThumbs}{$fname}" );
655 };
656 };
657 closedir( $dir );
658
659 /* delete file(s) from resize folder */
660 $dir = $docRoot.'/virtualgallery/images/resize/';
661 foreach(glob($dir.'*.*') as $v) {
662 unlink($v);
663 };
Auch wenn ich diese Fehlermeldung erhalten, Bilder in der „Größe ändern“ Ordner stecken immer .. Wenn jemand helfen kann, das wäre fantastisch sein! :)
Lösung
Sie versuchen, alle Bilder in einem Verzeichnis, um die Größe, ohne den Speicher nach jeder zu befreien. Versuchen Sie,
imagedestroy($img);
imagedestroy($tmp_img);
Für den Anfang. Auch entkoppeln das Bild, sobald Sie damit fertig sind, anstatt über das Verzeichnis ein zweites Mal iteriert.