У меня есть простой пользовательский обработчик ошибок, который записывает в файл журнала ошибок какую-нибудь полезную информацию об отладке.
это работа для всего, но это не срабатывает для ошибки FATAL.
Любой способ решить это?
В настоящее время, чтобы обойти это обстоятельство, я также зарегистрировал функцию выключения, которая проверяет error_get_last()
Нет, это просто ограничение set_error_handler()
; он не обрабатывает все ошибки.
Следующие типы ошибок не могут быть обработаны с помощью определенной пользователем функции:
E_ERROR
,E_PARSE
,E_CORE_WARNING
,E_COMPILE_ERROR
,E_COMPILE_WARNING
,E_COMPILE_WARNING
и большая частьE_STRICT
поднятых в файле, гдеset_error_handler()
.
Функция register_shutdown_function()
и error_get_last()
является подходящим решением.
Есть только хакерские способы решить эту проблему, например, используя register_shutdown_function()
а затем проверить, произошла ли ошибка внутри этой функции.
PHP имеет log_errors
по какой-либо причине, вы можете сделать PHP-журнал любой ошибкой в syslog или logfile без отдельной строки пользовательского кода. Поэтому использование set_error_handler()
для этой цели вовсе не требуется, и этого следует избегать, если вам не требуется, например, stacktrace.