今天发现有网友问到,这里旧普及一下PHP错误报告级别。它是指定了在什么情况下脚本代码中的错误会以错误报告的形式输出。这里的错误是广义的错误,包括E_NOTICE注意、E_WARNING警告、E_ERROR错误等。虽然这是有利于暴露问题,但实现使用中会存在很多问题。下面介绍设置错误报告级别的常用两种方法。

一、修改PHP的配置文件php.ini

这种方式重启web服务器后会永久生效。例如:error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT意思是报告所有的错误,但除了E_DEPRECATEDE_STRICT这两种。

将其修改为:error_reporting=E_ALL & ~E_NOTICE意思是报告所有的错误,但除了E_NOTICE这一种。这也是最常用的错误报告级别,它不会报告注意类(如:使用了未定义的变量)的错误。

二、使用error_reporting()函数

这种方式设置后,可以立即生效。但仅限于在当前脚本中的error_reporting()函数调用的后面区域。例如:

error_reporting(E_ALL ^ E_NOTICE); // 除了E_NOTICE之外,报告所有的错误

error_reporting(E_ERROR); // 只报告致命错误

echo error_reporting(E_ERROR | E_WARNING | E_NOTICE); // 只报告E_ERROR、E_WARNING 和 E_NOTICE三种错误

注意:配置文件php.ini中display_errors的默认值为On,代表显示错误提示,如果设置为Off,就会关闭所有的错误提示。使用 error_reporting(0) 或者在函数前面加 @,可以抑制错误输出,以防止错误消息泄露敏感信息。

文章目录