PHPk FATAL mailako akatsak harrapatzen ditu

Erreferentzia ofiziala

Webgune ofiziala set_error_handler register_shutdown_function

Nola harrapatu akats guztiak primeran

set_error_handler erabil daiteke errore mota gehienak harrapatzeko. FATAL mailako akatsen bat gertatzen denean, PHP-k eragiketa zuzenean amaitzen duelako, set_error_handler-ek ezarritako dei-funtzioa ezin da abiarazi. Une honetan, register_shutdown_function erabili behar dugu programa amaitzeko deia itzultzeko funtzioa ezartzeko. Kontuan izan behar da register_shutdown_function-ek ezarritako dei-itzulketa programa amaitu ondoren exekutatzen dela, prozesuan akatsen bat dagoen ala ez. Beraz, dei-itzultze honetan, akatsen bat gertatu den ala ez ere zehaztu behar dugu, eta akatsen bat gertatu bada, erregistroan erregistratuko dugu. Xehetasunak lortzeko, jo honako kode hau.

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