Hello,
ich weiß leider nicht, seit welcher PHP-Version das funktioniert, aber in derjenigen, die ich hier auf dem XAMPP habe (PHP 5.2.5) kann man die Informationen abfragen, auch ohne einen eigenen Error-Handler zu definieren. Im Handbuch steht für die Funktion error_get_last() die Ver 5.2.0:
<?php ### error.php ###
#error_reporting(~E_WARNING); ## [1]
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
echo "<br />\r\n";
echo "Error-Nr: " . $errno . "<br />\r\n";
echo "Error-String: " . $errstr . "<br />\r\n";
echo "Error-String: " . $errfile . "<br />\r\n";
echo "Error-String: " . $errline . "<br />\r\n";
return false;
}
#$old_error_handler = set_error_handler("myErrorHandler"); ## [2]
$fh = fopen('unbekannt.txt','rb+');
echo "<pre>\r\n";
echo htmlspecialchars(print_r(error_get_last(),1));
echo "</pre>\r\n";
#clearstatcache(); ## [3]
$fh = fopen('unbekannt.txt','rb'); ## [4a]
#$fh = fopen('unbekannt.txt','rb+'); ## [4b]
?>
Zum Spielen einfach mal die gekennzeichneten Zeilen auskommentieren, die mit a/b gekennzeichneten sinnvollerweise wechselseitig.
Daran sieht man, dass die Fehlerbehandlung in PHP noch sehr fehlerhaft ist.
Mich stört daran insbesondere, dass Fehlermeldungen, die die darunterliegende Plattform erzeugt, einfach verschluckt werden. Die sind nämlich meistens so aussagekräftig, dass man mit ihrer Kenntnis viel besser reagieren könnte.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg