Foutafhandeling toevoegen in bestaand script

Door 16 november 2012Tips & Trucs

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!