cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menangkap ralat maut PHP (`E_ERROR`)?

<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粉978551081P粉978551081459 hari yang lalu566

membalas semua(1)saya akan balas

  • P粉576184933

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

    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:

    balas
    0
  • Batalbalas
  • ItemDescription
    Error
    $errstr
    Nombor ralat rreeee
    Fail $Fail ralat
    OK $garisan ralat
    Jejak rreeee