Attiva Web - Realizzazione siti internet, ecommerce

Funzione per intercettare gli errori php ed inviarli via email

    • 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.

      Francesco // 22-06-2012 // PHP

    Commenti:

    • Francesco 04/07/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 04/07/2012

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

    Lascia un commento

    Invia commento


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