在我捕获所有 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');的控制器,处理程序不会被调用。
任何有关错误处理的建议将不胜感激,谢谢!