Come appare il messaggio
PHP Parse error: syntax error, unexpected token ";" in /var/www/html/wp-content/plugins/x/functions.php on line 214Cause frequenti
- Sintassi rimossa in PHP 8: offset di stringa con graffe
$str{0},create_functiono altri costrutti vecchi. - Il file è caricato a metà o troncato, per esempio dopo un FTP o un deploy interrotto.
- Manca un punto e virgola, una graffa o un apice nella riga precedente.
- Caratteri invisibili dall'editor: BOM all'inizio del file o spazi non separabili.
- Un plugin viene interpretato da una versione di PHP più nuova di quella supportata.
Verifica
- Verifica la sintassi del file segnalato
php -l /var/www/html/wp-content/plugins/x/functions.php - Versione PHP e ultimi errori
php -v; tail -n 20 /var/log/php8.2-fpm.log - Cerca la vecchia sintassi degli offset
grep -rnE '\$[a-zA-Z_]+\{[0-9]+\}' /var/www/html --include='*.php' | head - Cerca BOM e spazi non separabili
grep -rlP '^\xEF\xBB\xBF' /var/www/html --include='*.php' | head
Soluzione
- Esegui
php -lsul file segnalato: la riga nel log spesso non è la causa reale. - Passando a PHP 8 sostituisci la sintassi rimossa:
$str{0}diventa$str[0],create_functiondiventa una closure. - Ricarica i file troncati o ripeti l'aggiornamento se l'upload era incompleto.
- Rimuovi BOM e spazi non separabili e salva il file come UTF-8 senza BOM.
- Svuota l'opcache dopo la correzione, altrimenti continua a girare la versione vecchia e rotta.
Domande frequenti
Perché PHP indica una riga che sembra corretta?
Di solito manca un punto e virgola o una graffa prima. Controlla due o tre righe sopra il messaggio.
L'errore è comparso subito dopo l'upgrade di PHP: conviene tornare indietro?
Come misura immediata sì, ma meglio cercare e sostituire la sintassi rimossa.