richiedi subito informazioni chiamando al numero +39 080 4837098

Funzione per intercettare gli errori php ed inviarli via email

22 giu 2012

Quella che vi propongo è una semplice funzione che ho sviluppato per permettermi di ricevere via email eventuali errori di programmazione. Chi programma sa bene che per quanto si possa testare un'applicazione non riuscirà mai ad ottenere gli stessi test che si hanno nel regolare utilizzo di un software web.

E' per questo che ho voluto realizzare questa funzione sfruttando alcune delle funzioni presenti in php come set_error_handler

set_error_handler("errorHandler");

function errorHandler($code,$message,$filename,$lineNumber){
	$messaggio = '<h1>&Egrave; stato riscontrato un errore!</h1>';
	$messaggio.= '<p><strong>Indirizzo:</strong> '.$_SERVER['REQUEST_URI'].'</p>';
	$messaggio.= '<p><strong>User agent:</strong> '.$_SERVER['HTTP_USER_AGENT'].'</p>';
	$messaggio.= '<p><strong>Indirizzo ip:</strong> '.$_SERVER['REMOTE_ADDR'].'</p>';
	if(isset($_SERVER['HTTP_REFERER']))
		$messaggio.= '<p><strong>Referer:</strong> '.$_SERVER['HTTP_REFERER'].'</p>';
	$messaggio.= '<p><strong>Data:</strong> ['.date('r').']</p>';
	$messaggio.= '<p><strong>Errore:</strong> '.$message.' - '.$code.'</p>';
	$messaggio.= '<p><strong>Linea:</strong> '.$lineNumber.'</p>';
	$messaggio.= '<p><strong>File:</strong> '.$filename.'</p>';

	error_log($messaggio."\r\n\n\n",1,"vostramail","Content-type: text/html; charset=utf-8\r\n");
}

Cosa fa: intercetta l'errore e cerco di prendere più informazioni possibili che possono aiutarmi a capire cosa e chi ha generato l'errore. Viene quindi preso il browser utilizzato, l'indirizzo sul quale si è presentato l'errore, il referer, l'indirizzo ip, la data, la riga del file in cui si è presentato l'errore, dopo di chè prendo tutte queste informazioni e le spedisco via email.
Questa funzione è attualmente in uso su tutte le applicazioni realizzate da Attiva Web, questo mi permette di offrire soluzioni sempre più affidabili e di ricevere segnalazioni di errori prima ancora che il cliente le segnali :)

Fatene buon uso ;)
Presto vi mostrerò una funzione simile per intercettare gli errori MySQL.


Categoria: PHP
Autore: Francesco


Commenti:

Francesco 4/GIU/2012

Puoi settare il livello di restituzione degli errori scrivendo questa riga e compilandola a dovere prima di set_error_handler

error_reporting (FATAL | ERROR | WARNING);

Fabio 4/GIU/2012

Grazie, funzione utilissima! C'è un modo per bypassare i semplici E_NOTICE?

Lascia un commento

Nome: (obbligatorio)


Email: (obbligatoria - non sarà pubblica)


Sito:
Commento: (obbligatorio)

Invia commento


ATTENZIONE: il tuo commento verrà prima moderato e se ritenuto idoneo sarà pubblicato