在我捕获所有 PHP 错误的项目中,我设置了错误处理机制,如下所示:
- 我
error_reporting()
在index.php
文件中设置了覆盖文件中的任何php.ini
内容 system/codeigniter/CodeIgniter.php
在using 中设置了一个错误处理程序set_error_handler
- 此错误处理程序 ,_exception_handler
位于system/codeigniter/Common.php
- 该
_exception_handler
函数忽略E_STRICT
错误,show_php_error
如果严重性是您的函数指定的严重性,则从 Exceptions 系统库调用该函数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');
的控制器,处理程序不会被调用。
任何有关错误处理的建议将不胜感激,谢谢!