В моем проекте, чтобы поймать все ошибки PHP Я настроил свой механизм обработки ошибок следующим образом:обработки ошибок в CodeIgniter
- Я поставил
error_reporting()
вindex.php
файл, который переопределяет ничего в файлеphp.ini
- обработчик ошибки устанавливается в
system/codeigniter/CodeIgniter.php
с помощьюset_error_handler
- это обработчик ошибок,_exception_handler
, является найдено вsystem/codeigniter/Common.php
_exception_handler
функция игнорируетE_STRICT
ошибки, вызываетshow_php_error
функции из системной библиотеки Исключения, если тяжесть является то, что определяется вашейerror_reporting()
функции вindex.php
и регистрирует ошибку в соответствии с все, что вы создали в вашемconfig.php
файле- Обработчика возвращает
FALSE
, поэтому после этого PHP продолжает обрабатывать ошибку , однако, как правило, это соответствует вашему уровнюerror_reporting
иdisplay_errors
.
Дело в том, что озадачивает меня в том, что E_ERROR
ошибки т.е. фатальные ошибки не кажется, быть пойманным _exception_handler
вообще. Дело не только в том, что show_php_error
не вызывается, похоже, что функция просто не вызвана для них. Это, очевидно, проблема, так как это означает, что они не обрабатываются show_php_error
или не регистрируются. Например, если я намеренно ошибаюсь в контроллере $this->load->views('foo');
, обработчик не вызывается.
Любое предложение об обработке ошибок было бы высоко оценено, спасибо!
Я думаю, что это может быть проблема с самим PHP, не имея возможности проверить его. Если вы видите http://www.php.net/manual/en/function.error-reporting.php # 70126 вы увидите, что в этом случае E_ERROR вызывает аналогичный эффект, что и E_PARSE. – David
какая среда вы используете? – bottleboot