Menangkap Ralat Maut PHP Melalui Mendaftar Fungsi Penutupan
Masalah:
Sementara set_error_handler() boleh menangani kebanyakan ralat PHP, ia gagal menangkap ralat maut (E_ERROR), seperti itu disebabkan oleh memanggil fungsi yang tidak wujud.
Penyelesaian:
PHP 5.2 memperkenalkan register_shutdown_function, yang membolehkan anda mencatat ralat maut:
register_shutdown_function("fatal_handler"); function fatal_handler() { // Capture error information $error = error_get_last(); if ($error) { error_mail(format_error( $error["type"], $error["message"], $error["file"], $error["line"] )); } }
Tentukan fungsi format_error untuk memformat maklumat ralat:
function format_error($errno, $errstr, $errfile, $errline) { // Generate the error trace $trace = print_r(debug_backtrace(false), true); // Format the error information $content = <<<HTML <table border="1"> <thead> <th>Item</th> <th>Description</th> <thead> <tbody> <tr> <td>Error</td> <td><pre class="brush:php;toolbar:false">$errstr
$errno
$trace
Untuk mengendalikan fungsi mel, tentukan fungsi error_mail dan pertimbangkan untuk menggunakan perpustakaan seperti Swift Mailer.
Sumber Tambahan:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menangkap Ralat PHP Fatal Menggunakan register_shutdown_function?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!