Dieser Beitrag enthält Werbung und Werbelinks.
Vor einigen Tagen hatte ich einen merkwürdigen und nervigen Fehler auf zwei WordPress-Websites. Beim Hochladen von Bildern in die WordPress-Mediathek, egal ob über einen Beitrag oder direkt, verweigerte WordPress den Dienst und zeigte folgende Fehlermeldung an:
Der Server kann das Bild nicht verarbeiten. Dies kann vorkommen, wenn der Server beschäftigt ist oder nicht genug Ressourcen hat, um die Aufgabe abzuschließen. Es könnte helfen, ein kleineres Bild hochzuladen. Die maximale Größe sollte 2560 Pixel nicht überschreiten.
Die offensichtliche Lösung? Ein kleineres Bild hochladen. Alles klar, ich lud das gleiche Bild in einer Größe von 500×500 px und nur wenigen Kilobyte hoch, wurde jedoch mit der gleichen Fehlermeldung konfrontiert.
Nun begann die Fehlersuche.
Ich versuchte, mal einen anderen Dateityp hochzuladen. Bei PDFs und ZIPs gab es kein Problem. Das Problem trat nur bei JPGs auf.
Weitere Maßnahmen, die ich durchgeführt habe:
- Deaktivierung aller Plugins
- Ändern/Setzen von PHP Memory Limit, upload_max_filesize etc.
- .htaccess zurückgesetzt/gelöscht
Debug-Modus von WordPress aktivieren
Ich habe den Debug-Modus von WordPress in der wp-config.php aktiviert und mir die Fehlermeldungen im Error-Log angesehen.
Das sah ungefähr so aus. Personalisierte Daten und Verzeichnisnamen habe ich entfernt:
Stack trace:
#0 wp-includes/plugin.php(205): WP_Hook->apply_filters('3840', Array)
#1 wp-admin/includes/image.php(288): apply_filters('big_image_size_...', 2560, Array, '/www/htdocs/w01...', 12667)
#2 wp-admin/includes/image.php(169): wp_create_image_subsizes('/www/htdocs/...', 12667)
#3 wp-admin/includes/ajax-actions.php(2533): wp_update_image_subsizes(12667)
#4 wp-includes/class-wp-hook.php(310): wp_ajax_media_create_image_subsizes('')
#5 wp-includes/class-wp-hook.php(334): WP_Hook->apply_filters('', Array)
#6 wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#7 wp-admin/admin-ajax.php(188): do_action('wp_ajax_media-c...')
#8 {main}
thrown in wp-includes/class-wp-hook.php on line 312
Interessant ist der Teil bei:
#1 wp-admin/includes/image.php(288): apply_filters('big_image_size_...', 2560, Array, '/www/htdocs/w01...', 12667)
Der Fehler hat also offenbar damit zu tun, dass WordPress das hochgeladene Bild verkleinern will, es jedoch nicht kann.
Nach etwas Internetrecherche fand ich heraus, dass WordPress seit Version 5.3 Bilder, die größer als 2560 Pixel sind, automatisch verkleinert.
Seit Version 5.3 hat WordPress die maximale Größe hochgeladener Bilder auf 2560 Pixel begrenzt. Dies geschah, um die Website-Leistung zu verbessern und die Serverlast zu reduzieren.
Ich gehe also davon aus, dass etwas bei der Verkleinerung der Bilder nicht ganz sauber läuft.
Mit dem Plugin Disable „BIG Image“ Threshold sollte man das Problem eigentlich beheben können. Bei mir half es jedoch nicht.
Die Lösung zum Problem
Letztendlich bestand meine Lösung darin, die PHP-Version der WordPress-Installation von Version 8.0 auf 7.4 zurückzustellen. Offenbar ist WordPress 6.3.1 noch nicht vollständig an PHP-Version 8.0 angepasst.
Jedenfalls scheint bei der älteren PHP-Version der Prozess der Bildverkleinerung anders zu funktionieren, und deshalb ist der Fehler nach der Umstellung der PHP-Version verschwunden.
Wenn du also ebenfalls im Dunkeln tappst, könntest du einfach versuchen, die PHP-Version zu ändern.
Dies funktioniert übrigens bei vielen WordPress-Fehlern, insbesondere im Zusammenhang mit Plugins. Manche Entwickler achten nicht auf durchgehende Kompatibilität mit allen PHP-Versionen. Ich bin kein Programmierer, verstehe aber ein wenig davon. Ich glaube, es liegt wahrscheinlich einfach daran, dass durchgehende Versionskompatibilität nicht immer möglich ist.
Was sagt Chat GPT dazu?
Ich habe dann Chat GPT mal dazu befragt. Meine Frage:
Warum funktionieren einige WordPress Plugins bei PHP Version 7.4 einwandfrei aber bei 8.0 nicht?
Die Antwort:
Das Verhalten von WordPress-Plugins kann je nach PHP-Version variieren, und es gibt mehrere Gründe, warum ein Plugin, das unter PHP 7.4 einwandfrei funktioniert, unter PHP 8.0 Probleme verursachen könnte:
Syntax- und Funktionen-Änderungen
Jede Hauptversion von PHP bringt oft neue Funktionen, veränderte Syntax und manchmal auch veraltete (deprecated) oder entfernte Funktionen und Bibliotheken mit sich. Ein Plugin, das eine nun veraltete oder entfernte Funktion verwendet, wird unter der neuen PHP-Version nicht korrekt funktionieren.
Strengere Typüberprüfung
Neuere PHP-Versionen wie PHP 8.0 haben oft strengere Typüberprüfungen. Wenn der Code eines älteren Plugins nicht den neuen Anforderungen entspricht, können Fehler oder Probleme auftreten.
Fehlerbehandlung
Neuere PHP-Versionen können anders mit Fehlern umgehen, sie genauer protokollieren oder in einigen Fällen strenger sein, was zu Fehlermeldungen oder unerwartetem Verhalten führen kann.
Performance-Optimierungen
Manchmal können Performance-Optimierungen in neuen PHP-Versionen dazu führen, dass älterer Code nicht mehr wie erwartet funktioniert. Dies ist allerdings seltener der Fall als die oben genannten Punkte.
Plugin-Entwicklung
Nicht alle Plugin-Entwickler aktualisieren ihre Plugins regelmäßig oder testen sie gegen die neuesten PHP-Versionen. Daher kann es sein, dass bei einem Update der PHP-Version auf dem Server Plugins plötzlich nicht mehr funktionieren, weil sie noch nicht für die neueste PHP-Version optimiert wurden.
Abhängigkeiten
Einige Plugins können von anderen PHP-Paketen oder -Bibliotheken abhängig sein, die selbst möglicherweise nicht mit neueren PHP-Versionen kompatibel sind.
Wenn Sie feststellen, dass ein Plugin unter PHP 8.0 nicht funktioniert, aber unter PHP 7.4 einwandfrei läuft, ist es oft hilfreich, den Plugin-Entwickler zu kontaktieren oder das Support-Forum des Plugins zu konsultieren. Oftmals sind die Entwickler schon dabei, Kompatibilitätsprobleme zu beheben, oder andere Benutzer haben bereits Lösungen oder Workarounds gefunden.