So sieht die Meldung aus
PHP Parse error: syntax error, unexpected token ";" in /var/www/html/wp-content/plugins/x/functions.php on line 214Häufige Ursachen
- Syntax, die in PHP 8 entfernt wurde: String-Offsets mit geschweiften Klammern
$str{0},create_functionoder alte Konstrukte. - Die Datei ist halb hochgeladen oder abgeschnitten, etwa nach einem abgebrochenen FTP- oder Deploy-Vorgang.
- Ein Semikolon, eine Klammer oder ein Anführungszeichen fehlt in der Zeile davor.
- Unsichtbare Zeichen aus dem Editor: BOM am Dateianfang oder geschützte Leerzeichen.
- Ein Plugin wird von einer neueren PHP-Version geparst, als es unterstützt.
Prüfen
- Die gemeldete Datei direkt prüfen
php -l /var/www/html/wp-content/plugins/x/functions.php - PHP-Version und letzte Fehler
php -v; tail -n 20 /var/log/php8.2-fpm.log - Alte String-Offset-Syntax finden
grep -rnE '\$[a-zA-Z_]+\{[0-9]+\}' /var/www/html --include='*.php' | head - BOM und geschützte Leerzeichen finden
grep -rlP '^\xEF\xBB\xBF' /var/www/html --include='*.php' | head
Lösung
- Zuerst
php -lauf die gemeldete Datei ansetzen: die Zeile im Log ist oft nicht die echte Ursache. - Beim Umstieg auf PHP 8 entfernte Syntax ersetzen:
$str{0}wird zu$str[0],create_functionzu einer Closure. - Abgeschnittene Dateien neu hochladen oder das Update erneut einspielen, wenn der Upload unvollständig war.
- BOM und geschützte Leerzeichen entfernen, Datei als UTF-8 ohne BOM speichern.
- Danach den Opcache leeren, sonst läuft die alte kaputte Version weiter.
Häufige Fragen
Warum zeigt PHP eine Zeile, die korrekt aussieht?
Meist fehlt ein Semikolon oder eine Klammer davor. Prüfe zwei bis drei Zeilen vor der Meldung.
Der Fehler kam direkt nach dem PHP-Upgrade – zurückwechseln?
Als Sofortmaßnahme ja, aber besser die entfernte Syntax suchen und ersetzen.