Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich mit „register_shutdown_function()' schwerwiegende PHP-Fehler abfangen?

Wie kann ich mit „register_shutdown_function()' schwerwiegende PHP-Fehler abfangen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-26 19:36:13793Durchsuche

How Can I Catch PHP Fatal Errors Using `register_shutdown_function()`?

Schwerwiegende PHP-Fehler abfangen

PHPs set_error_handler() versagt oft, wenn versucht wird, schwerwiegende Fehler (E_ERROR) abzufangen. Dies wird besonders problematisch, wenn mit nicht vorhandenen Funktionsaufrufen oder anderen Instanzen gearbeitet wird, die schwerwiegende Fehler auslösen.

Um diese Einschränkung zu umgehen, können Sie PHPs register_shutdown_function() für Versionen 5.2 verwenden. Der folgende Codeausschnitt demonstriert die Implementierung:

register_shutdown_function("fatal_handler");

function fatal_handler() {
    $errfile = "unknown file";
    $errstr = "shutdown";
    $errno = E_CORE_ERROR;
    $errline = 0;

    $error = error_get_last();

    if ($error !== NULL) {
        $errno = $error["type"];
        $errfile = $error["file"];
        $errline = $error["line"];
        $errstr = $error["message"];

        error_mail(format_error($errno, $errstr, $errfile, $errline));
    }
}

Um die Lösung zu vervollständigen, definieren Sie die Funktionen error_mail und format_error. Hier ist ein Beispiel:

function format_error($errno, $errstr, $errfile, $errline) {
    // Code to format and display error information goes here
}

Erwägen Sie den Einsatz von Swift Mailer für die error_mail-Funktionalität.

Weitere Informationen finden Sie in den folgenden Ressourcen:

  • $php_errormsg
  • Vordefinierte Konstanten

Das obige ist der detaillierte Inhalt vonWie kann ich mit „register_shutdown_function()' schwerwiegende PHP-Fehler abfangen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn