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

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

DDD
DDDOriginal
2024-12-29 08:02:17190Durchsuche

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

Schwerwiegende (E_ERROR) PHP-Fehler abfangen

Problem:

Obwohl die Funktion set_error_handler() für die Erfassung der meisten effektiv ist Bei PHP-Fehlern werden schwerwiegende Fehler, wie etwa der Aufruf nicht vorhandener Funktionen, nicht behandelt. Daher suchen Entwickler nach alternativen Methoden zur Erfassung dieser kritischen Fehler.

Lösung:

PHP 5.2 bietet die Funktion register_shutdown_function(), die die Erfassung schwerwiegender Fehler ermöglicht. Hier ist eine Implementierung, um Fehler-E-Mails zu senden, wenn solche Fehler auftreten:

register_shutdown_function("fatal_handler");

function fatal_handler() {
    $error = error_get_last();  // Obtain last error

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

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

Unterstützende Funktionen:

Definieren Sie die erforderlichen unterstützenden Funktionen, z. B. format_error und error_mail. Die Funktion „format_error“ kann die Fehlerinformationen in einem Tabellenformat zurückgeben:

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

Verwenden Sie die Swift Mailer-Bibliothek, um die Funktion „error_mail“ zu implementieren.

Zusätzlich Ressourcen:

  • [$php_errormsg](https://www.php.net/manual/en/reserved.variables.errormsg.php)
  • [Vordefinierte Konstanten ](https://www.php.net/manual/en/sprache.constants.predefined.php)

Das obige ist der detaillierte Inhalt vonWie kann ich schwerwiegende PHP-Fehler (E_ERROR) mit „register_shutdown_function()' abfangen und behandeln?. 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