suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wie erkennt man schwerwiegende PHP-Fehler („E_ERROR“)?

<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粉978551081P粉978551081495 Tage vor591

Antworte allen(1)Ich werde antworten

  • P粉576184933

    P粉5761849332023-08-28 11:12:14

    使用 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函数。

    另请参阅:

    Antwort
    0
  • StornierenAntwort
  • ItemDescription
    Error
    $errstr
    错误号
    $errno
    文件 $错误文件
    $错误线
    跟踪
    $trace