Masalah:
Walaupun fungsi set_error_handler() berkesan untuk menangkap kebanyakan Ralat PHP, ia gagal menangani ralat maut, seperti panggilan tidak wujud fungsi. Ini menyebabkan pembangun mencari kaedah alternatif untuk menangkap ralat kritikal ini.
Penyelesaian:
PHP 5.2 menyediakan fungsi register_shutdown_function() yang membolehkan menangkap ralat maut. Berikut ialah pelaksanaan untuk menghantar e-mel ralat apabila menghadapi ralat sedemikian:
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)); } }
Fungsi Sokongan:
Tentukan fungsi sokongan yang diperlukan, seperti format_error dan error_mail. Fungsi format_error boleh mengembalikan maklumat ralat dalam format jadual:
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
$trace
Gunakan perpustakaan Swift Mailer untuk melaksanakan fungsi error_mail.
Tambahan Sumber:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menangkap dan Mengendalikan Ralat PHP Fatal (E_ERROR) Menggunakan `register_shutdown_function()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!