PHP улавя грешки на ниво FATAL
Официална справка
Официален уебсайт set_error_handler register_shutdown_functionКак да уловим перфектно всички грешки
set_error_handler може да се използва за улавяне на повечето типове грешки. Когато се срещне грешка на ниво FATAL, тъй като PHP директно прекратява операцията, функцията за обратно извикване, зададена от set_error_handler, не може да бъде задействана. Понастоящем трябва да използваме функцията register_shutdown_function, за да зададем функцията за обратно извикване за прекратяване на програмата. Трябва да се отбележи, че обратното повикване, зададено от register_shutdown_function, се изпълнява след прекратяване на програмата, независимо дали има грешка в процеса. Така че в този обратен разговор ние също трябва да определим дали е възникнала грешка и ако е възникнала грешка, ще я запишем в дневника. За подробности вижте следния код.
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);
}