Php的错误捕捉
当php程序出错了,默认的是显示一些错误到页面上的。我们当然希望捕捉到这些错误并处理了。Php提供了set_error_handler这个接口,但是她不是万能的。先看这个文件吧。
- <?
- error_reporting(E_ALL);
- ini_set('display_errors','0');
- ini_set('log_errors','1');
- ini_set('error_log','/home/liubin/aaaa.log');
- ini_set('html_errors','0');
- set_error_handler('myHandler');
- function myHandler($code, $msg, $file, $line) {
- echo $code;
- }
- echo $asdf;
- method_aaa();
- ?>
执行之后,页面显示8,即一个notice级别的错误,这是echo $asdf;的错误。myHandler得到了她,aaaa.log没有记录她。而调用不存在的方法的错误,myHandler则得不到。被记到了aaaa.log了。
看了一下手册,好像myHandler不能记录error等错误,详见
http://php.chinaunix.net/manual/zh/function.set-error-handler.php
这可如何是好呢。我要把error捕捉再转向到错误页面难道就没办法了?