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