Wie erkennt man schwerwiegende PHP-Fehler („E_ERROR')?
P粉978551081
P粉978551081 2023-08-27 14:42:20
0
1
516
<p>Ich kann <code>set_error_handler()</code> verwenden, um die meisten PHP-Fehler abzufangen, aber es funktioniert nicht bei schwerwiegenden Fehlern (<code>E_ERROR</code>), wie z. B. dem Aufruf eines Nicht-Fehlers -vorhandene Funktion. Gibt es eine andere Möglichkeit, diese Fehler abzufangen? </p> <p>Ich versuche alle Fehler zu beheben, indem ich <code>mail()</code> aufrufe und verwende PHP 5.2.3. </p>
P粉978551081
P粉978551081

Antworte allen(1)
P粉576184933

使用 register_shutdown_function 记录致命错误,这需要 PHP 5.2+:

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));
    }
}

您必须定义 error_mailformat_error 函数。例如:

function format_error( $errno, $errstr, $errfile, $errline ) {
    $trace = print_r( debug_backtrace( false ), true );

    $content = "
    
表>”;
返回$内容;
}


使用Swift Mailer编写error_mail函数。

另请参阅:

Item Description
Error
$errstr
错误号
$errno
文件 $错误文件
$错误线
跟踪
$trace
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!