PHP zazna napake na ravni FATAL

Uradna referenca

Uradna spletna stran set_error_handler register_shutdown_function

Kako popolnoma ujeti vse napake

set_error_handler je mogoče uporabiti za zajemanje večine vrst napak. Ko pride do napake na ravni FATAL, ker PHP neposredno zaključi operacijo, funkcije povratnega klica, ki jo nastavi set_error_handler, ni mogoče sprožiti. Trenutno moramo s funkcijo register_shutdown_function nastaviti funkcijo povratnega klica za zaključek programa. Upoštevati je treba, da se povratni klic, nastavljen z register_shutdown_function, izvede po zaključku programa, ne glede na to, ali je v postopku napaka. Torej v tem povratnem klicu moramo ugotoviti tudi, ali je prišlo do napake, in če je prišlo do napake, jo bomo zabeležili v dnevnik. Za podrobnosti glejte naslednjo kodo.

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