如何攔截到 php 的 notice, warning 錯誤?

Notice: Undefined property: stdClass::$xxx in /Applications/xxx/xxx/xxx/xxx.php on line 35

Warning: Invalid argument supplied for foreach() in /Applications/xxx/xxx/xxx/xxx.php on line 35

上面類似這種的錯誤
要如何能夠攔截呢?
如果可以的話我想改成自己的解釋
用戶看到也不會怪

阅读 3.7k
2 个回答

用户看到?
一般在生产系统里,都是把php.ini里的display_errors设置成off,这样用户页面只要能渲染,在前端层面是不会出现错误信息的。而在开发时,可以通过在文件开始位置写上:

error_reporting(E_ALL); 
ini_set("display_errors", 1);

来临时开启报错功能,不过我个人觉得用的不多,一般都是页面完全渲染不出来(算是重大错误吧)才会打开,平时都是通过error_log在关键点上主动打log的,这样开个bash或者ssh窗口用tail -f error.log直接就能看到运行情况,当然用框架有单独错误处理的不说了,反正都大同小异。

另外你看下php.ini文件吧,注释里边写的很清楚有开发和生产两套配置,一般按生产系统那套就行。

set_error_handler,set_exception_handler,register_shutdown_function这三个方法,可以找各种框架看看他们的错误异常接管,也可以用whoops这种现成的类库。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题