PHP: 5 Gestione degli errori in php: La Guida Essenziale per un Codice Robusto
Riccardo Brivio
15 Set, 2025
Qualsiasi programmatore commette errori: fa parte del processo di sviluppo. Quindi una corretta gestione degli errori in PHP è essenziale, sia per individuarli velocemente in fase di sviluppo, sia per prevenirli in produzione.
PHP mette a disposizione diverse funzionalità per l’error handling e la gestione delle eccezioni, che aiutano a rendere le applicazioni più robuste e sicure. In questa guida analizziamo i vari tipi di errori, come gestirli e come utilizzare le eccezioni per avere un maggiore controllo sul flusso del codice.
Tipi di errori in PHP
Gli errori in PHP vengono classificati principalmente in tre categorie: Fatal Error, Warning e Notice.

Errori Fatali (Fatal Error)
Gli errori fatali sono i più gravi: impediscono al codice PHP di continuare l’esecuzione.
Un esempio comune è la chiamata a una funzione non definita.
<?php
// PHP Fatal Error: Call to undefined function my_function()
my_function();
?>
Quando si verifica un Fatal Error, lo script si interrompe immediatamente e viene mostrato un messaggio di errore.
Warning
I Warning (possono essere essere considerati come degli avvisi) indicano un problema che non blocca completamente il codice, ma può causare malfunzionamenti.
Un esempio è il passaggio di un numero errato di argomenti a una funzione.
<?php
// PHP Warning: function call with wrong number of arguments
my_function(1, 2, 3);
?>
Lo script continua a funzionare, ma il warning viene segnalato.
Notice
I Notice segnalano condizioni anomale, spesso meno gravi.
Un esempio tipico è l’utilizzo di una variabile non definita.
<?php
// PHP Notice: Undefined variable
echo $undefined_var;
?>
In questo caso l’esecuzione prosegue, ma il messaggio avvisa il programmatore di un possibile bug.
Tabella completa degli errori PHP
PHP mette a disposizione una serie di costanti predefinite che identificano i vari tipi di errori. Ecco l’elenco completo:
| Costante | Descrizione | Codice |
|---|---|---|
| E_ERROR | Errore fatale di runtime | 1 |
| E_WARNING | Avviso di runtime non fatale | 2 |
| E_PARSE | Errore di parsing del codice sorgente | 4 |
| E_NOTICE | Notifica di runtime non fatale | 8 |
| E_CORE_ERROR | Errore fatale del motore interno di PHP | 16 |
| E_CORE_WARNING | Avviso non fatale del motore interno di PHP | 32 |
| E_COMPILE_ERROR | Errore fatale in compilazione | 64 |
| E_COMPILE_WARNING | Avviso non fatale in compilazione | 128 |
| E_USER_ERROR | Errore fatale generato dall’utente | 256 |
| E_USER_WARNING | Avviso non fatale generato dall’utente | 512 |
| E_USER_NOTICE | Notifica generata dall’utente | 1024 |
| E_STRICT | Avviso per uso di funzioni deprecate | 2048 |
| E_RECOVERABLE_ERROR | Errore fatale recuperabile | 4096 |
| E_DEPRECATED | Avviso per funzioni deprecate | 8192 |
| E_USER_DEPRECATED | Avviso deprecato generato dall’utente | 16384 |
Funzione error_reporting() per una corretta gestione degli errori in php
La funzione error_reporting() permette di specificare a php quali errori devono essere mostrati.
Esempio:
<?php
// Mostra solo errori fatali e warning
error_reporting(E_ERROR | E_WARNING);
// Mostra tutti gli errori
error_reporting(E_ALL);
?>
Si possono combinare più tipi di errori usando gli operatori logici (| OR, & AND, ~ NOT).
Visualizzazione degli errori in ambiente di sviluppo e produzione
- Ambiente di sviluppo: è utile mostrare tutti gli errori a video in modo che il programmatore possa avere tutte le informazioni necessarie per poter risolvere il problema.
- Ambiente di produzione: In ambiente di produzione è meglio nasconderli all’utente finale poiché se chi riceve i dettagli dell’errore fosse malintenzionato potrebbe aver accesso ad informazioni riservate e quindi sfruttare qualche falla nel sistema aumentando i rischi.
È possibile configurarlo con:
<?php
ini_set("display_errors", 0); // Nasconde errori a video
?>
In produzione gli errori dovrebbero essere registrati nei log del server, non mostrati agli utenti.
Gestione delle eccezioni in PHP
Oltre agli errori, PHP permette di gestire situazioni anomale tramite le eccezioni. Le eccezioni consentono di intercettare e trattare gli errori in modo elegante e modulare, separando la logica dell’applicazione dalla gestione degli errori.
Struttura try-catch-finally
<?php
try {
// Codice che potrebbe generare un'eccezione
$result = 100 / 0;
} catch (Exception $e) {
echo "Errore: " . $e->getMessage();
} finally {
echo "Fine esecuzione";
}
?>
try: contiene il codice potenzialmente pericoloso.catch: gestisce l’eccezione lanciata.finally: viene sempre eseguito, utile per cleanup (chiusura file, connessioni DB…).
Creazione di eccezioni personalizzate
È possibile definire classi di eccezioni personalizzate estendendo la classe Exception:
<?php
class CustomException extends Exception {}
try {
throw new CustomException("Errore personalizzato");
} catch (CustomException $e) {
echo "Gestito: " . $e->getMessage();
}
?>
Questa tecnica è molto utile per gestire in modo specifico determinati errori, migliorando leggibilità e manutenibilità del codice.
Differenze tra PHP 5 e PHP 7 nella gestione degli errori
- In PHP 5, una divisione per zero genera un Fatal Error.
- In PHP 7,
100/0restituisce INF, mentre0/0restituisce NAN.
Questo comportamento riduce gli arresti improvvisi dell’applicazione, ma rende ancora più importante una corretta gestione degli errori.
Conclusione
La gestione degli errori in PHP è un aspetto essenziale per scrivere applicazioni robuste e professionali. Attraverso error_reporting, la configurazione degli errori in produzione, e l’uso di eccezioni (standard o personalizzate), puoi costruire codice più sicuro, leggibile e manutenibile.




Lascia un commento