Bagaimana untuk menangkap ralat maut PHP (`E_ERROR`)?
P粉978551081
P粉978551081 2023-08-27 14:42:20
0
1
564
<p>Saya boleh menggunakan <code>set_error_handler()</code> untuk menangkap kebanyakan ralat PHP, tetapi ia tidak berfungsi untuk ralat maut (<code>E_ERROR</code>), seperti memanggil bukan -fungsi yang wujud. Adakah terdapat cara lain untuk menangkap ralat ini? </p> <p>Saya cuba menyelesaikan semua ralat dengan memanggil <code>mail()</code> dan sedang menjalankan PHP 5.2.3. </p>
P粉978551081
P粉978551081

membalas semua(1)
P粉576184933

Gunakan register_shutdown_function untuk log ralat maut, ini memerlukan 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));
    }
}

Anda mesti menentukan fungsi error_mailformat_error. Contohnya:

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

    $content = "
    
表>”;
kembalikan $isi;
}


Tulis fungsi error_mail menggunakan Swift Mailererror_mail.

Lihat juga:

Item Description
Error
$errstr
Nombor ralat rreeee
Fail $Fail ralat
OK $garisan ralat
Jejak rreeee
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan