Enige tijd geleden kreeg ik een script voorgeschoteld welke vol met fouten zat en absoluut niet netjes geprogrammeerd. Om de programmering nog wat lelijker te maken maar wel alle fouten op te sporen een simpel foutafhandelings scriptje toegevoegd. Eerst de foutmeldingen maar even uitgezet zodat de bezoekers hier niet meer mee gestoord werden:
<?php error_reporting(0); ?>
Vervolgens de volgende code toegevoegd om alle ernstige programmeer foutmeldingen op te vangen:
<?php
//Foutmelding naar bestand schrijven
function write_to_log($error)
{
//Error.txt openen en aan het einde toevoegen
$open = fopen('errors.txt', 'a');
//Zoveel mogelijk vermelden
$content = "DATE: ".date('H:i d-m-Y')."\n";
$content .= "URL: ".$_SERVER['REQUEST_URI']."\n";
$content .= "IP: ".$_SERVER['REMOTE_ADDR']."\n";
$content .= $error."\n";
$content .= "--------------------\n";
//Schrijven
fwrite($open,$content);
//Sluiten
fclose($open);
}
//Callback voor set_error_handler
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
//Alle fout informatie vermelden
$error = "ERROR NO: ".$errno."\n";
$error .= "ERROR: ".$errstr."\n";
$error .= "ON LINE: ".$errline."\n";
$error .= "IN FILE: ".$errfile;
//Opslaan
write_to_log($error);
//Zorgen dat de foutmelding niet getoond wordt
return FALSE;
}
//Callback voor set_exception_handler
function myExceptionHandler($error)
{
//Opslaan
write_to_log("ERROR: ".$error);
//Zorgen dat de foutmelding niet getoond wordt
return FALSE;
}
//Foutafhandeling "inschakelen"
set_error_handler("myErrorHandler",E_ERROR | E_WARNING );
set_exception_handler("myExceptionHandler");
?>
Op deze wijze werd er een log bijgehouden in errors.txt met daarin alle nodige informatie om de foutmeldingen op te sporen!