Hallo!
ich habe mal von
http://www.php.net/manual/de/function.set-error-handler.php folgendes entwas abgewandeltes Script versucht:
<?php
// redefine the user error constants - PHP4 only
define(FATAL,E_USER_ERROR);
define(ERROR,E_USER_WARNING);
define(WARNING,E_USER_NOTICE);
// set the error reporting level for this script
error_reporting(FATAL + ERROR + WARNING);
// error handler function
function myErrorHandler ($errno, $errstr) {
switch ($errno) {
case FATAL:
echo "<b>FATAL</b> [$errno] $errstr<br>\n";
echo " Fatal error in line ".__LINE__." of file ".__FILE__;
echo ", PHP ".PHP_VERSION." (".PHP_OS.")<br>\n";
echo "Aborting...<br>\n";
exit -1;
break;
case ERROR:
echo "<b>ERROR</b> [$errno] $errstr<br>\n";
break;
case WARNING:
echo "<b>WARNING</b> [$errno] $errstr<br>\n";
break;
default:
echo "Unkown error type: [$errno] $errstr<br>\n";
echo "error in line ".__LINE__." of file ".__FILE__;
break;
}
}
// set to the user defined error handler
$old_error_handler = set_error_handler("myErrorHandler");
$a = 1;
$b = 0;
$x = $a / $b;
echo $x;
?>
Als Meldung bekomme ich dann
Unkown error type: [2] Division by zero
error in line 30 of file /webseite/errors.php
Die Fehler-Beschreibung ist richtig, der Dateipfad auch, aber __LINE__ ergibt genau die Zeile in der eben __LINE__ steht und nicht die des Fehlers. Wie kann ich an diese Zeile kommen? Oder habe ich was wichtiges in dem Beispielscript auf php.net übersehen?
Viele Grüße
Andreas
PS: Was ist der Unterschied zwischen Handler und Trigger?