PHP отлавливает ФАТАЛЬНЫЕ ошибки уровня

Официальная ссылка

Официальный веб-сайт 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);
}