In breve: “Undefined constant” significa che PHP ha trovato un nome usato come costante ma nessuna definizione valida. L’errore compare spesso dopo il passaggio a PHP 8, che non interpreta più automaticamente una costante sconosciuta come stringa. Leggi file e riga: se appartengono a un plugin o tema, aggiorna o correggi quel componente senza modificare il core WordPress.
Indice dei contenuti
Costante o stringa?
Una costante PHP deve essere definita prima dell’uso, per esempio con define('APP_MODE', 'production') oppure const APP_MODE = 'production';. Una stringa letterale deve invece essere racchiusa tra virgolette.
Il codice $mode = production; tenta di leggere una costante chiamata production. Se l’intenzione era usare testo, la forma corretta è $mode = 'production';. Non applicare questa modifica automaticamente: il nome potrebbe essere una vera costante che dovrebbe essere caricata da un file mancante.
Leggere l’errore completo
- Copia il nome esatto della costante, il file e il numero di riga.
- Controlla il percorso per identificare plugin, tema, snippet o core.
- Cerca nel progetto una definizione con
defineoconst. - Verifica se il file che la definisce viene caricato prima dell’uso.
- Annota aggiornamenti o cambio PHP eseguiti subito prima del problema.
Consulta il log PHP e l’eventuale debug.log senza mostrare errori sul sito pubblico. Il nome della costante da solo non indica quale valore debba assumere.
Perché compare con PHP 8
Nelle versioni precedenti, l’accesso a una costante non qualificata e non definita poteva generare un avviso e venire interpretato come stringa. PHP 8 tratta questo caso come errore. Un vecchio plugin può quindi smettere di funzionare dopo il cambio versione, anche se il difetto era già presente nel codice.
Il ritorno temporaneo a una versione PHP precedente ancora compatibile può ripristinare il servizio, ma non è una correzione definitiva. Aggiorna il componente o chiedi una versione compatibile.
Plugin, tema o snippet
Se il percorso è dentro wp-content/plugins o wp-content/themes, controlla aggiornamenti e requisiti PHP del produttore. In staging, disattiva il componente identificato o passa a un tema predefinito. Per uno snippet personalizzato, disabilitalo con lo strumento che lo ha inserito.
Se il file è stato modificato manualmente, confrontalo con una copia originale della stessa versione. Non sostituire l’intero plugin senza conservare eventuali personalizzazioni autorizzate.
Correggere codice personalizzato
- se il nome rappresenta testo, aggiungi le virgolette corrette;
- se è una costante, definiscila prima dell’uso nel punto previsto dall’architettura;
- se è opzionale, controlla
defined('NOME_COSTANTE')prima di leggerla; - se è stata rinominata, aggiorna tutti i riferimenti usando la documentazione del progetto;
- aggiungi un test per la versione PHP supportata.
Non definire una costante con un valore casuale soltanto per eliminare il fatal error: il sito potrebbe continuare con una configurazione errata.
Ripristinare il sito
- Crea o verifica un backup.
- Ripristina la versione funzionante del solo componente coinvolto.
- Svuota la cache opcode e applicativa dopo la sostituzione dei file.
- Controlla frontend, Bacheca e funzione che generava l’errore.
- Programma l’aggiornamento corretto in staging.
Cosa non fare
- non modificare il core WordPress;
- non aggiungere virgolette senza capire se il nome è una stringa;
- non definire valori inventati in
wp-config.php; - non lasciare il debug visibile ai visitatori;
- non cambiare PHP e più componenti nello stesso test.
Quando contattare l’assistenza Xlogic
Apri un ticket se non riesci ad accedere al sito, la versione PHP non cambia o ti serve il log completo. Indica dominio, URL, data e ora, versione PHP, nome della costante, file e riga. L’assistenza può verificare ambiente e log; la correzione di plugin, tema o codice personalizzato spetta al relativo sviluppatore.
Guide Xlogic correlate
- Errore critico WordPress: diagnosi e soluzioni
- Cambiare versione PHP senza bloccare WordPress
- WordPress Parse error: syntax error, unexpected
Domande frequenti
Perché Undefined constant compare dopo il passaggio a PHP 8?
PHP 8 non converte più automaticamente una costante sconosciuta in una stringa. Codice legacy che prima generava soltanto un avviso può quindi interrompere l’esecuzione.
Basta aggiungere le virgolette al nome?
Solo se quel nome doveva essere una stringa. Se era una vera costante, devi trovare perché la sua definizione manca o viene caricata troppo tardi.
Posso definire la costante in wp-config.php?
Soltanto quando la documentazione del componente prevede quella costante e ne conosci il valore corretto. Non aggiungere definizioni casuali per nascondere l’errore.
Tornare alla vecchia versione PHP risolve?
Può ripristinare temporaneamente il sito se la versione è ancora supportata, ma il codice resta incompatibile. Aggiorna o correggi il componente e prova nuovamente in staging.
Fonti
- PHP 8: modifiche incompatibili sulle costanti non definite
- PHP: verificare se una costante è definita
- WordPress: diagnosi degli errori comuni