PHP offre alcuni importanti strumenti per la visualizzazione e il logging degli errori che permettono allo sviluppatore di determinare quali errori devono essere mostrati e in quale situazione. Il più importante è certamente error_reporting() attraverso il quale è possibile decidere con quale granularità tener conto degli errori.
Per esempio:
error_reporting(E_ALL); // Mostra tutti gli errori error_reporting(E_ALL ^ E_NOTICE); // Esclude i NOTICE error_reporting(0); // Non mostra nulla error_reporting(1); // Solo gli errori fatali (E_ERROR)
I parametri di questa funzione possono essere espressi attraverso delle costanti predefinite o relativi valori binari.
Inoltre, è possibile decidere se mostrare gli errori a video o se ridirigerli in un file. Per farlo si può agire attraverso delle direttive ini_set() che possono essere espresse direttamente nello script, in un file .htaccess, nella configurazione del virtual host o direttamente nel php.ini; in caso la direttiva sia espressa in più di un modo la priorità seguirà l'ordine espresso (script, .htaccess, apache, php.ini), permettendoci di sovrascrivere localmente i valori.
display_errors (On/Off) indica se visualizzare o meno gli errori a video.
log_errors (On/Off) indica se attivare il logging su file degli errori.
error_log (string) indica il nome del file dove loggare gli errori. Il file deve essere scrivibile dal web server.
Una configurazione che uso spesso è la seguente:
error_reporting(E_ALL ^ E_NOTICE);
ini_set("log_errors", "On");
ini_set("error_log", "/path/file/di/log");
if(stristr($_SERVER['REQUEST_URI'],'?show_errors')){
ini_set("display_errors","On");
}else{
ini_set("display_errors","Off");
}
In questo modo tengo traccia di tutti gli errori tranne dei notice e li mostro a video esclusivamente per debug se aggiungo alla URL dello script ?show_errors, evitando che l'utente visualizzi stringhe di errore.
Se vuoi aggiornamenti su PHP inserisci la tua email nel box qui sotto: