У меня есть простой пользовательский обработчик ошибок, который записывает в файл журнала ошибок какую-нибудь полезную информацию об отладке.
это работа для всего, но это не срабатывает для ошибки 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.