最新消息:

PHP中错误处理

PHP admin 2030浏览 0评论

PHP提供了很多的错误等级,这里不一一罗列出来,有兴趣可以翻翻PHP的手册获取。本文主要是讲述在生产环境和开发环境中,错误的处理方式。

1 错误等级

在生产环境中建议 error_reporting(E_ALL ^ E_NOTICE) ,意义是除了notice,其他错误都会记录在案。

在开发环境中如果想严格控制错误,那么可以这样:error_reporting(E_ALL | E_STRICT); 这里几乎所有的错误都会记录,其实也可以和生产环境一致,notice不记录。

2 错误相关的配置(php.ini)

display_errors   是否展示错误,建议开发环境On,生产环境一定要Off,

log_errors  是否记录错误到日志文件中,建议开发环境On,如果你生产环境并发请求比较大,建议Off,当你生产环境出现莫名其妙的问题可以打开几分钟记录一下。

error_log   错误日志的文件路径,当log_errors为On的时候,出现错误的时候,会把错误记录到此文件中。

综上所述,建议在开发环境中如下配置

display_errors = On

log_errors = On

error_log = “/path/to/php/log/file”

生产环境中这样配置:

display_errors=Off

log_errors=Off   #当需要定位问题的时候,可以改为On

error_log = “/path/to/php/log/file”

3 自定义错误处理方式

有时候需要对错误进行更加高级的处理,那么可以使用函数set_error_handler。如 set_error_handler(‘my_error_handler’),出现错误的时候会调用函数my_error_handler来处理,也可 以这样set_error_handler(array(‘eobj’,’emethod’)),这样的话,出现错误会调用eobj对象中的 emethod方法。这里要注意的是,如果你这样声明了自定义错误处理,那么如果你设置了日志记录的配置都不起错用,就是说出现错误了也不会记录到配置文 件中的error_log中,当然如果错误是致命错误,编译都没通过,那就会记录到error_log中。

有时候需要自己主动抛出错误的时候可以使用trigger_error。想象某个场景,你提供的某个接口需要一个关键的参数,而调用人确没有给或者 给的参数不符合要求,那么可以trigger_error(‘param $obj is not valid’);  更加详细的使用方法请参看手册

php.ini的相关默认设置如下:

20130729115425

转载请注明:jinglingshu的博客 » PHP中错误处理

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址