Управление ошибками PHP

Я искал по сети, чтобы попытаться найти способ поймать все ошибки, брошенные PHP (5.3)

Я читал документацию, и похоже, что set_error_handler – это то, что мне нужно, но оно не приводит к ошибкам фатального / синтаксического анализа. Я не уверен, что это возможно …

Вот мой источник: https://github.com/tarnfeld/PHP-Error-Handler Не стесняйтесь fork / commit, если вы знаете лучшие решения для всего этого.

Заранее спасибо!

Обновлено!

Используя приведенные ниже ответы, я закончил писать обработчик ошибок , он заботится об E_ERROR | E_PARSE | E_WARNING | E_NOTICE и убьет скрипт, когда он будет фатальным! 🙂

    Указание руководства:

    Следующие типы ошибок не могут быть обработаны с помощью определенной пользователем функции: E_ERROR , E_PARSE , E_CORE_WARNING , E_COMPILE_ERROR , E_COMPILE_WARNING , E_COMPILE_WARNING и большая часть E_STRICT поднятых в файле, где set_error_handler() .

    Это означает, что Fatals нельзя поймать и обработать. Что вы можете сделать, так это настроить дополнительный обработчик, который будет запускаться при выходе сценария, например register_shutdown_function .

    В этом обработчике используйте error_get_last и проверьте, была ли это Fatal Error. Однако это не позволит продолжить выполнение сценария. Сценарий закончится, но вы можете выполнить любую очистку или ведение журнала (как правило, смертельные будут регистрироваться в любом случае error.log) или что-то еще.

    В комментариях ниже приведен set_error_handler

     register_shutdown_function('shutdownFunction'); function shutDownFunction() { $error = error_get_last(); if ($error['type'] == 1) { //do your stuff } } 

    Но учтите, что это все равно будет ловить определенные дополнительные ошибки времени выполнения.

    Вы можете следить за error_log . В Ubuntu это находится в /var/log/apache2/error_log

    Так называемые «фатальные ошибки» – это, пожалуй, самая неприятная ошибка в php. Лучшее, что мы можем сделать, это убедить «php group» распознать эту ошибку как таковую, проголосовав за этот запрос http://bugs.php.net/bug.php?id=28331 .

    Пока это не исправлено, мы обречены использовать грязные хаки, такие как обработчики ошибок выключения или автозагрузки.

    Нет, ловить фатальные и синтаксические ошибки невозможно. Исправляйте ошибки, потому что они подняты до того, как скрипт даже скомпилирован. Неустранимая ошибка, потому что они … фатальные (т. Е. Скрипт не может продолжать работать после их столкновения)

    Если вы хотите уловить фатальные ошибки (включая ошибки синтаксического анализа), лучшим решением является установка error_logging в файле php.ini, например

     display_errors = Off log_errors = On ignore_repeated_errors = Off ignore_repeated_source = Off