WordPress: Fehlerhaften Code für ein Update auf PHP 8 finden

Ich beschäftige mich gerade damit ein paar WordPress-Webseiten die ich betreue auf PHP 8, genauer 8.1, upzugraden, da die Hoster der Reihe nach die Unterstützung für PHP 7.x einstellen. Wie man dabei schnell und einfach fehlerhaften Code findet, will ich im Folgenden kurz erklären.

Vorweg kann man sich das Leben etwas einfacher machen, indem man den WordPress-Kern auf die aktuellste Version updatet und auch alle ausstehenden Theme- und Plugin-Updates durchführt.

Dabei kann man sich (in aller Regel) sehr gut auf die Angaben der Plugin-Entwickler zur Kompatibilität verlassen. Bei Kompatibilität mit WordPress 6.x.x kann man sich dann auch implizit auf eine Unterstützung von PHP 8 verlassen, so dass man Kern und diese Plugins nicht genauer untersuchen muss.

Was übrig bleibt sind selbst entwickelte Plugins und Themes die selbst geschrieben oder gekauft worden sind, da diese in aller Regel nicht über die WordPress-Mechanismen aktualisiert werden.

Den nicht abgedeckten Code lädt man sich lokal herunter und öffnet dann eine Konsole/ein Terminal an entsprechender Stelle.

Auf UNIX-basierten (Linux + Mac OS) Systemen kann man sich dann den PHP-Parser im Linting-Modus in der Kommandozeile zunutze machen, indem man folgendes Kommando ausführt:

find . -type f -iname '*.php' -exec /usr/bin/php8.1 -l {} \;

Hiermit wird im aktuellen Verzeichnis (und darunter) nach PHP-Dateien gesucht. Jede gefundene Datei wird an den eingebauten Linter (“Quellcodeprüfer“, der Parameter -l) von PHP geschickt, der den Code auf Korrektheit prüft.

Das erzeugt dann z.B. solch eine Ausgabe:

No syntax errors detected in ./Elegant/header.php
No syntax errors detected in ./Elegant/phpThumb/phpThumb.php
No syntax errors detected in ./Elegant/phpThumb/phpthumb.bmp.php
No syntax errors detected in ./Elegant/phpThumb/phpthumb.filters.php
PHP Fatal error:  Array and string offset access syntax with curly braces is no longer supported in ./Elegant/phpThumb/phpthumb.functions.php on line 987
Errors parsing ./Elegant/phpThumb/phpthumb.functions.php
No syntax errors detected in ./Elegant/phpThumb/index.php
No syntax errors detected in ./Elegant/phpThumb/phpThumb.config.php
No syntax errors detected in ./Elegant/phpThumb/demo/phpThumb.demo.demo.php

In diesem Fall befindet sich also mindestens ein Fehler in der phpthumb.functions.php des Themes, den man sich dann genauer anschauen und fixen sollte.

Achtung: Der Linter gibt nur den ersten gefundenen Fehler aus. Man sollte also unbedingt den Editor seiner Wahl so einstellen, dass er ein Linting der gesamten Datei durchführt, damit man noch weitere Fehler finden kann.

Nach dem Fixen des Codes kann man den auf seiner Testumgebung hochladen und prüfen, ob die Seite dann mit PHP 8.x läuft. Hier können dann auch die ERROR-Logs des Webservers noch gute Dienste leisten, die man ggf. aber erst aktivieren muss.


Über mich

Ich bin gelernter Mediengestalter, studierter Druck- und Medientechniker und leidenschaftlicher Tüftler und Bastler.

Beruflich beschäftige ich mich mit der digitalen Transformation von Unternehmen, sowie der Automatisierung von Unternehmensprozessen, in der Druck- und Medienbranche. Mehr dazu findet sich im Lebenslauf.

Privat interessieren mich Kaffee(maschinen), Themen rund um Webentwicklung, das Internet im Allgemeinen und Speziellen und vieles, vieles mehr.

Ich freue mich auf Feedback per E-Mail unter kontakt@flomei.de, einen Euro für die Kaffeekasse oder etwas von meiner Amazon Wunschliste.