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-22 19:41:15372Durchsuche

How Can I Catch Fatal PHP Errors Using register_shutdown_function?

Schwerwiegende PHP-Fehler durch Registrieren einer Shutdown-Funktion abfangen

Problem:
Während set_error_handler() damit umgehen kann Bei den meisten PHP-Fehlern werden schwerwiegende Fehler (E_ERROR), die beispielsweise durch den Aufruf „nonexistent“ verursacht werden, nicht erfasst Funktionen.

Lösung:
PHP 5.2 führt die Funktion register_shutdown_function ein, mit der Sie schwerwiegende Fehler protokollieren können:

register_shutdown_function("fatal_handler");

function fatal_handler() {
    // Capture error information
    $error = error_get_last();
    if ($error) {
        error_mail(format_error(
            $error["type"], $error["message"], $error["file"], $error["line"]
        ));
    }
}

Definieren Sie die Funktion format_error, um den Fehler zu formatieren Informationen:

function format_error($errno, $errstr, $errfile, $errline) {
    // Generate the error trace
    $trace = print_r(debug_backtrace(false), true);
    
    // Format the error information
    $content = <<<HTML
    <table border="1">
        <thead>
            <th>Item</th>
            <th>Description</th>
        <thead>
        <tbody>
            <tr>
                <td>Error</td>
                <td><pre class="brush:php;toolbar:false">$errstr
Errno
$errno
File $errfile Line $errline Trace
$trace
HTML; return $content; }

Um die Mailing-Funktionalität zu handhaben, definieren Sie die Funktion error_mail und erwägen deren Verwendung eine Bibliothek wie Swift Mailer.

Zusätzliche Ressourcen:

  • [PHP-Fehler Handhabung](https://www.php.net/manual/en/features.error-handling.php)
  • [$php_errormsg](https://www.php.net/manual/en/ reserviert.variables.php#constant.$php_errormsg)

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