WordPress Fehler bei Bild hochladen

Problem

In WordPress: Medien –> Datei hinzufügen –> Dateien auswählen
Hinweis bei WordPress: „Maximale Dateigröße für Uploads: 32 MB.“
Bild hochladen geht schief, obwohl das Bild kleiner als 32 MB ist. Anschließend kann man keine Bilder mehr in der WordPress Admin Oberfläche hochladen.

Ursache

bei Strato Kundenlogin unter https://www.strato.de/apps/CustomerService
Ihr Paket –> Statistik anzeigen –> Logfiles
Die Fehlermeldung lautet:

PHP Fatal error: Out of memory (allocated 140509184) (tried to allocate 2920 bytes) /wp-includes/media.php on line 2108, referer: /wp-admin/upload.php

Hier die Zeilen 2107 – 2114 in der Datei media.php:
function wp_imagecreatetruecolor($width, $height) {
$img = imagecreatetruecolor($width, $height);
if ( is_resource($img) && function_exists('imagealphablending') && function_exists('imagesavealpha') ) {
imagealphablending($img, false);
imagesavealpha($img, true);
}
return $img;
}

Zeile 2108 in media.php in WordPress 4.2.2 deutsch führt zur Fehlermeldung „PHP Fatal error: Out of memory„:
$img = imagecreatetruecolor($width, $height);

Ursache ist also:
„Entscheidend ist übrigens nicht die Dateigröße in kByte, sondern die Bildgröße in Pixel. Das Beispielbild von oben hat etwa 3500×2300 Bildpunkte. Damit WordPress davon ein Thumbnail oder verkleinertes Bild erzeugen kann, muß das Bild komplett entkomprimiert im Speicher vorhanden sein. Das sind dann aber schon 24 MB nur für die Bilddaten. Da ja WordPress nun selber auch schon Speicher verbraucht, wird es eng. … Das erklärt auch, warum das Bild in der Mediathek trotz Fehlermeldung erscheint. Das Hochladen klappt, erst beim Laden des Bildes in den Speicher für die verkleinerten Ansichten tritt der Fehler auf, eben jenes: out of memory“ (Quelle: User Putzlowitsch am 14.02.2010, 09:26 in http://forum.wpde.org/konfiguration/65545-1und1-bilderupload-out-memory.html)

WordPress sieht – soweit ich weiß – eine Speichergröße in php von 42 MB vor, 64 MB für eine Multisite Installation. Strato reserviert großzügigerweise 128 MB, die aber je nach Größe des Bildes auch nicht reichen, denn es gilt laut Zeile 2108 in media.php folgende Formel:
Breite in Pixel x Höhe in Pixel x Truecolor(2 hoch 24 = 16 Mio Farben)

Lösung

Bei Strato in der Kundenverwaltung: Verwaltung –> Website-Configurator –> PHP-Version einstellen
php verstellen, dann nochmal zurück stellen –> php Speicher wird freigegeben

Vermeiden des Problems

Eine Lösung besteht unter Umständen darin, grundsätzlich den Browser Uploader zu benutzen:

„Du benutzt den Mehrdateienuploader. Treten Probleme auf? Benutze dann stattdessen den Browser Uploader.“

Eine mögliche weitere Lösung könnte darin bestehen, einen anderen Media Uploader zu verwenden, z.B. wp-file-upload.zip. Diese Lösung mit einem alternativen File Uploader habe ich noch nicht probiert.

Bei mir ist der Fehler so noch nicht aufgetreten, weil ich die Bilder vorm Hochladen auf maximal 500 Kilobyte verkleinere und auf die Höhe und Breite in Pixel achte.