Gli errori PHP sono errori di codice più o meno gravi che possono partire da un semplice errore di sintassi fino a errori fatali che fanno interrompere l’esecuzione del codice.
Andiamo a vedere quali tipi di errori ci sono e per ogni tipologia esaminiamo esempi specifici.
Dopodiché vedremo diversi metodi che ci permettono di visualizzare gli errori PHP.
Table of Contents
Cosa sono gli errori PHP
Quando c’è un errore di sintassi o si richiama una variabile o una funzione non dichiarata nel codice PHP, si verifica un errore. Si parla quindi di errori PHP quando ci sono problemi all’interno del codice.
Come vedremo ci sono diversi tipi di errori. Alcuni possono interrompere l’esecuzione degli script, altri, invece, ci impediscono di ottenere il risultato che ci aspettavamo.
Quando creiamo uno script in PHP, possiamo imbatterci in quattro tipologie di errore. Vediamo quali sono.
Tipi di errori PHP
Gli errori di codice in PHP possono essere suddivisi in quattro categorie: notice, warning, parse error e fatal error.
Notice
Quando si verifica un errore di questo tipo nel codice dello script, l’esecuzione dello script non viene interrotta. Un errore notice non è un errore grave, ma questo avviso viene utilizzato per indicare che è possibile che sia presente un errore.
Il caso più comune è quello che si verifica se si tenta di richiamare una variabile che non è stata definita.
Quando si verifica un errore di questo tipo verrà indicato come “Notice error” o come “PHP Notice”.
Warning
Gli errori PHP del tipo “warning” fanno parte di errori non fatali. Anche in questo caso, come abbiamo appena visto per gli errori notice, l’esecuzione dello script non viene interrotta.
Questo tipo di errore può verificarsi per esempio quando vengono passati parametri scorretti a una funzione o quando si cerca di richiamare un file non presente.
Un errore di questo tipo viene identificato come “Warning error” o “PHP warning”.
Parse error
In PHP i parse error sono gli errori di sintassi, si tratta quindi di un errore nel codice come per esempio un errore di battitura, l’assenza di un punto e virgola o delle virgolette.
Gli errori PHP che appartengono a questa categoria vengono indicati come “Parse error” o come “PHP Parse error”.
Fatal error
Gli errori fatali sono degli errori critici che interrompono l’esecuzione dello script. Possono avvenire durante l’inizializzazione, la compilazione oppure durante l’esecuzione stessa del codice.
Questi errori vengono indicati come “Fatal error” o “PHP fatal error”.
Esempi di errori PHP
Ora che abbiamo visto le quattro principali categorie di errori PHP, vediamo degli esempi che ci aiutano a identificare il tipo di errori.
Parse error
Come abbiamo visto, questi errori possono essere generati durante la scrittura del codice. Nella maggior parte dei casi possono essere dovuti a un errore di battitura o a una dimenticanza.
Ecco un esempio di parse error:
<?php
//Simuliamo un "Parse error"
echo "Ciao a tutti \n"
echo "Benvenuti";
?>
Il codice qui sopra restituisce questo errore:
Parse error: syntax error, unexpected token "echo", expecting "," or ";" in [...] on line 4
In questo caso otteniamo questo messaggio di errore perché alla linea 3, alla fine dell’echo “Ciao a tutti”, abbiamo dimenticato di inserire il punto e virgola.
Warning error
A questa categoria appartengono errori non critici. In questi casi, quindi, l’esecuzione del codice viene portata a termine anche se viene riscontrato l’errore.
Vediamo un esempio di warning error:
<?php
//Simuliamo un "Warning error"
function somma($a,$b) {
return $a+$b;
}
include ("funzioni_matematiche.php");
echo somma(7,3);
?>
Questo codice restituisce il seguente avviso:
Warning: include(funzioni_matematiche.php): Failed to open stream: No such file or directory in [...] on line 6
Warning: include(): Failed opening 'funzioni_matematiche.php' for inclusion (include_path='.:') in [...] on line 6
10
In questo caso il programma continua con l’esecuzione del codice e come vediamo, la funzione somma viene eseguita e ci viene restituito il risultato atteso (10).
Prima di restituirci il risultato, un errore Warning ci avvisa che il file funzioni_matematiche.php non è presente sul server.
Notice error
Come i warning error, gli errori notice non sono fatali e non interrompono l’esecuzione del codice.
Ecco un esempio di codice che genera un notice error:
<?php
//Simuliamo un "Notice error"
function nome_cognome($nome,$cognome) {
return "Nome: ".$nome." Cognome: ".$cognome;
}
$n = "Mario";
$c = "Rossi";
echo nome_cognome($n,$v);
?>
Il risultato sarà il seguente:
Notice: Undefined variable: v in [...] on line 8
Nome: Mario Cognome:
In questo caso abbiamo richiamato nella funzione nome_cognome la variabile $v che non era stata dichiarata. Ci viene evidenziata la presenza dell’errore (variabile non definita) e ci viene restituito l’output perché l’esecuzione del codice prosegue.
Come vediamo, però, in questo caso il risultato che otteniamo non è quello aspettato perché ci viene restituito solo il campo “nome”.
La tipologia di errori e quindi il tipo di avvisi che ci vengono segnalati, può variare in base alla versione PHP che stiamo usando.
In questo caso, infatti, in PHP 7 ci viene segnalato un Notice error. In PHP 8, invece, questo errore è stato riclassificato come Warning error.
Per ulteriori dettagli sulla riclassificazione degli errori dalla versione 7 alla 8 puoi consultare l’RFC.
Fatal error
I fatal error sono errori critici che possono verificarsi in diversi casi, per esempio se cerchiamo di richiamare una funzione che non esiste.
In questo codice c’è un esempio di fatal error:
<?php
//Simuliamo un "Fatal error"
function somma($a,$b) {
return $a+$b;
}
echo moltiplica(7,3);
?>
L’esecuzione restituisce questo errore:
Fatal error: Uncaught Error: Call to undefined function moltiplica() in [...]:7
Stack trace:
#0 {main}
thrown in [...] on line 7
In questo caso stiamo tentando di chiamare la funzione moltiplica() che non è stata dichiarata. Tieni presente che quando si verifica un errore di questo tipo viene interrotta l’esecuzione del codice.
Come mostrare gli errori PHP
Durante lo sviluppo è molto facile imbattersi in errori, anche semplicemente in quelli di sintassi. Per riuscire a identificare e risolvere gli errori PHP è necessario capire che tipo di errori sono e dove si trovano nel codice.
Tieni presente che la visualizzazione degli errori dovrebbe essere attivata solo per il debug o ai fini dello sviluppo. Ricordati, perciò, di disattivarla una volta finito.
Ci sono diversi modi per visualizzare gli errori PHP:
- aggiungere del codice al file PHP
- aggiungere delle direttive al file php.ini
- attivare la visualizzazione degli errori con il file .htaccess
- attivare la visualizzazione degli errori da cPanel
- consultare il log degli errori.
Vediamo come fare a mostrare gli errori seguendo questi metodi.
Modificare lo script PHP
Uno dei sistemi più rapidi per mostrare gli errori PHP, è quello di aggiungere del codice direttamente nello script.
In questo caso ci basta aggiungere queste righe all’inizio del file PHP:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
La direttiva display_errors ci permette di attivare o disattivare la visualizzazione degli errori.
Attivando display_startup_errors, possiamo visualizzare anche gli errori riscontrati durante l’inizializzazione.
Con la funzione “error_reporting” possiamo specificare quali errori visualizzare. Il parametro “E_ALL” ci permette di visualizzare tutti gli errori.
Se invece volessimo escludere gli errori Notice, ci basterebbe utilizzare questo parametro:
E_ALL & ~E_NOTICE
Fai attenzione, perché con questo sistema gli errori che causano un’interruzione dell’esecuzione dello script, come parse e fatal error, non vengono mostrati. In questo caso per vedere gli errori bisogna consultare i file di log.
Modificare il file php.ini
Per mostrare gli errori PHP ci basta modificare il file php.ini.
Tieni presente che alcuni provider non ti permettono di modificare il file php.ini.
Con tutti i nostri piani dall’hosting condiviso ai servizi dedicati come VPS cloud hosting e server dedicati, puoi cambiare la versione PHP e modificare il file php.ini.
Vuoi mettere alla prova il servizio? Approfitta del nostro hosting gratuito per 14 giorni e fai tutti i test che vuoi con un piano trial.
Come vedremo nella prossima sezione, puoi abilitare la visualizzazione degli errori anche direttamente da cPanel, attivando le impostazioni senza dover modificare a tutti gli effetti il codice.
In questo caso vediamo quali direttive aggiungere al file php.ini per attivare la visualizzazione degli errori:
display_errors = on
error_reporting = E_ALL
Con queste direttive verranno mostrati tutti gli errori a schermo.
Modificare il file .htaccess
Possiamo attivare la visualizzazione degli errori anche attraverso il file .htaccess. In questo caso ci basta aggiungere le seguenti righe:
php_flag display_errors on
php_flag display_startup_errors on
Abilitare gli errori da cPanel
Da cPanel è possibile abilitare la visualizzazione degli errori di codice a schermo o consultare il log degli errori.
Tieni presente che per un sito online è preferibile consultare il log degli errori.
Se, invece, il sito o l’applicazione è in sviluppo, potrebbe servirti abilitare la visualizzazione a schermo.
Vediamo come fare.
Consultare il log degli errori
Sui nostri piani, il log degli errori è attivo di default. Se vuoi verificare la presenza di errori di codice puoi consultare il file error_log che si trova nella directory in cui è stato riscontrato l’errore.
Questo file viene generato in automatico dal sistema quando si verifica un errore di codice. Ti basta usare il file manager di cPanel per individuare il file e visualizzarlo.
In questo esempio puoi vedere il file error_log che ha memorizzato degli errori PHP di tipo fatal e notice degli esempi che ti ho mostrato prima.
Visualizzare gli errori PHP a schermo
Sui nostri piani hosting per opzione predefinita la gestione della versione PHP è affidata a Cloudlinux. In questo caso, quindi, per attivare la visualizzazione degli errori a schermo puoi utilizzare le opzioni dello strumento Select PHP Version.
Dalla scheda Options è possibile attivare l’opzione diplay_errors come vedi in questa schermata.
Ricordati di disattivare l’opzione prima di pubblicare il sito o dopo aver risolto gli errori.
Conclusioni
Abbiamo visto che esistono diversi tipi di errori PHP e che in alcuni casi possono interrompere l’esecuzione degli script.
Oltre a poter consultare i log degli errori, esistono anche diversi modi per attivare la visualizzazione degli errori di codice a schermo. Questo sistema ci aiuta ai fini di debug e ci permette di identificare gli errori durante lo sviluppo.
Conoscevi la classificazione degli errori PHP? Ti è mai servito abilitare la visualizzazione degli errori per risolvere un problema? Fammi sapere con un commento.
Lascia un commento