PHP detectează erori de nivel FATAL
Referință oficială
Site oficial set_error_handler register_shutdown_functionCum să prinzi perfect toate erorile
set_error_handler poate fi utilizat pentru a captura majoritatea tipurilor de erori. Când se întâlnește o eroare de nivel FATAL, deoarece PHP termină direct operațiunea, funcția de apel invers setată de set_error_handler nu poate fi declanșată. În acest moment, trebuie să folosim register_shutdown_function pentru a seta funcția de apel invers pentru terminarea programului. Trebuie remarcat faptul că apelul de apel setat de register_shutdown_function este executat după terminarea programului, indiferent dacă există o eroare în proces. Deci, în acest apel invers, trebuie să determinăm, de asemenea, dacă a apărut o eroare și, dacă a apărut o eroare, o vom înregistra în jurnal. Pentru detalii, vă rugăm să consultați următorul cod.
set_error_handler('exception_handler');
register_shutdown_function('shutdown_handler');
function exception_handler($err_no, $err_str, $err_file, $err_line)
{
error_reporting(0);
// save error log
// ...
error_reporting(E_ALL);
}
function shutdown_handler()
{
$error = error_get_last();
if (empty($error)) {
return;
}
error_reporting(0);
// save error log
// ...
error_reporting(E_ALL);
}