<?
# Error-Handling-Funktionen - geboren aus dem Support-Leben (die meisten
# Nutzer koennen das PHP-Error-Log nicht nutzen)
#
# Author: hide@address.com
# date: 2003-10-11
# location: Leipzig, Germany
# version: x1 (whatever that means)
# Anleitung:
#
# Pflicht: damit die Umleitung des Error-Log funktioniert, muss $debug TRUE sein
#
# optional: in dieser Datei die Variable $myErrorFile anpassen (Pfad zur Log-Datei)
# z.B. $myErrorFile="myPhpError.log";
#
# optional: Error-Level anpassen (äquivalent zu Einstellungen in php.ini)
# (z.B. $error_reporting=(E_ALL & ~E_NOTICE); )
# customizing starts here ...
# hier ist der Logfile-Dateiname für den custom error-Handler zu setzen ...
# (kann auch ein kompletter Pfad sein)
if (!$myErrorFile) $myErrorFile="myPhpError.log";
# set errors-typs logged ..
# Examples:
# - Show all errors, except for notices
if (!$error_reporting) $error_reporting=(E_ALL & ~E_NOTICE);
#
# - Show only errors
# $error_reporting=(E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR);
#
# - Show all errors except for notices
# $error_reporting=(E_ALL);
# Ende customizing
$eArray=array(
E_ALL=>"E_ALL",
E_ERROR=>"E_ERROR",
E_WARNING=>"E_WARNING",
E_NOTICE=>"E_NOTICE",
E_COMPILE_WARNING=>"E_COMPILE_WARNING",
E_USER_ERROR=>"E_USER_ERROR",
E_USER_WARNING=>"E_USER_WARNING",
E_USER_NOTICE=>"E_USER_NOTICE"
);
// user-defined error handler function
function myErrorHandler ($errno, $errstr, $errfile, $errline) {
global $myErrorFile,$eArray,$error_reporting;
// soll der Fehler reportet werden? (s. Einstellungen im Kopf dieser Datei)
if (($error_reporting & $errno)==$errno){
// hier ist die Ausgabe-Destination für den custom error-Handler zu setzen ...
$str=date("d-M-Y H:i:s",time());
$str.=" ".$eArray[$errno]." ".$errstr." in ".$errfile." on line ".$errline."\n";
if ($f=fopen($myErrorFile,"a")){
$ret=fwrite($f,$str,strlen($str));
// bei Fehler-Typ "ERROR" MUSS DIESE Funktion abbrechen ... Skript laeuft sonst
// trotz Fehler "irgendwie weiter" (undefinierbare Zustaende mit
// Datenverlust bis Festplattenschrott moeglich))
if ($errno==E_ERROR || $errno==E_USER_ERROR){
$ret=fwrite($f,"was fatal error... aborting.\n");
exit("1");
}
fclose($f);
}else{
echo "Cannot write to error-log $myErrorFile";
}
}
}
// set to the user defined error handler
if ($debug){
$old_error_handler = set_error_handler("myErrorHandler");
}
// Generate Test-Errors ...
// this should be logged only ..
# trigger_error("test error-handler E_USER_WARNING",E_USER_WARNING);
// this should be logged AND script should abort after arriving at this user-
// defined error code ..
# trigger_error("test error-handler E_USER_ERROR",E_USER_ERROR);
// generic debugging function ...
function debug($level=0,$str=""){
global $debug;
if ((! $debug) || ($debug<$level)) return;
echo $str."<br>";
}
// generic error function ...
function croak($str){
//if (! $debug) return;
echo "<font color=red>".$str."</font><br>";
}
?>