943 Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo zusammen,

ich habe einen Hosting-Server, wo ich scheinbar keinen eigenen Error-Handler registrieren kann, d.h. wie oben in der Frage angedeutet, gibt die Funktion set_error_handler NULL zurück.
Auch wenn ich die Beispielscripte von der PHP-Seite nehme.

Ich hatte zuerst vermutet, die Funktion ist disabled, aber das ist nicht der Fall. Auch der safe_mode ist deaktiviert. Woran kann es liegen?
Bei Bedarf poste ich auch die Ausgabe von phpinfo().

PHP-Version ist 5.2.17

Bin für jeden Tipp dankbar!

Anbei der Beispielcode von der PHP-Seite, den ich verwendet habe:


function myErrorHandler($errno, $errstr, $errfile, $errline) {
if (!(error_reporting() & $errno)) {
// This error code is not included in error_reporting
return;
}

switch ($errno) {
case E_USER_ERROR:
echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
echo " Fatal error on line $errline in file $errfile";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
echo "Aborting...<br />\n";
exit(1);
break;

case E_USER_WARNING:
echo "<b>My WARNING</b> [$errno] $errstr<br />\n";
break;

case E_USER_NOTICE:
echo "<b>My NOTICE</b> [$errno] $errstr<br />\n";
break;

default:
echo "Unknown error type: [$errno] $errstr<br />\n";
break;
}

/* Don't execute PHP internal error handler */
return true;
}

// set to the user defined error handler
$old_error_handler = set_error_handler("myErrorHandler");
var_dump($old_error_handler);

2 Antworten

0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Ein Blick ins Handbuch: php.net/set_error_handler sagt uns:
Rückgabewerte

Wenn der eingebaute Errorhandler verwendet wurde, wird NULL zurückgegeben. NULL wird ebenfalls zurückgegeben, falls ein Fehler wie z.B. ein ungültiger Callback aufgetreten ist.
Warum also nicht mit z.B. trigger_error() erstmal prüfen, ob nicht längst dein Handler durchlaufen wird?
0 Punkte
Beantwortet von
danke für den tipp. der handler wird tatsächlich durchlaufen.

jetzt versteh ich das ganze auch. Sieht so aus, als ob ich mit dem Rückgabewert gar nichts anfangen kann, denn was meiner Meinung nach aus dem Handbuch nicht klar rüberkommt, ist die Tatsache, dass immer der VORHERIGE Handler zurückgegeben wird. Wenn noch keiner registriert ist, eben NULL für die Standardbehandlung. Und wenn mein Handler nicht registriert werden kann, auch NULL, weil das ja offensichtlich dann für die Standardbehandlung steht.

Schade dass man das nicht unterscheiden kann. Blöderweise könnte ich natürlich einfach den Handler zweimal registrieren, um beim zweiten Mal zu schauen, obs beim ersten Mal geklappt hat... irgendwie dämlich...

Aber trotzdem danke!
...