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);
}