Hallo,
ich möchte mich da gelich mal dranhängen.
ich verwende da eine Konstruktion, die Tom sich mal irgendwann ausgedacht hat. Hier als Beispiel:
<?php ### error_number.php ###
$GLOBALS['ERROR'] = array();
ini_set('track_errors','1');
set_error_handler("get_errors");
function get_errors($errno, $errmsg, $filename, $linenum ) #, $_vartable, $php_errormsg)
{
# global $php_errormsg;
$GLOBALS['ERROR']['errno'] = $errno;
$GLOBALS['ERROR']['errmsg'] = $errmsg;
$GLOBALS['ERROR']['filename'] = $filename;
$GLOBALS['ERROR']['linenum'] = $linenum;
$GLOBALS['ERROR']['php_errormsg'] = $php_errormsg;
}
#------------------------------------------------------------------------------
Feher provozieren:
$fh = fopen('nonexisting','rb+');
echo "<pre>\n";
if (!empty($php_errormsg))
{
echo "Fehlermeldung: $php_errormsg<br>\n";
}
print_r($GLOBALS['ERROR']);
echo "</pre>\n";
?>
Das Ding hat für mich immer noch zwei Schönheitsfehler.
Ich weiß nicht, wie man innerhalb eines Scriptes das Fehlerarray automatisch zurücksetzen könnte, außer man erzeugt nochmals eine Abfragefunktion dafür, oder macht es explizit, also nach der Masche
if(!empty($GLOBALS['ERROR']['errno']))
{
# Fehlerbehandlung
$GLOBALS['ERROR'] = array;
}
Und dann kriege ich es einfach nicht hin, das $php_errormsg in das Fehlerarray zu übertragen. Das ist zwar nicht wirklich wichtig, da die Fehlermeldung auch in $errmsg drinsteht, aber wieso es nicht klappt, interessiert mich trotzdem.
Das 6. Argument ist noch nicht vorhanden, wenn der Errorhandler ausgeführt wird.
Lieber wäre mir, wenn man die Fehlernummer $errno ohne dieses wilde Konstrukt abfragen könnte. Hat da jemand eine Idee, wie man da herankommt?
LG
Chris