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