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