很多情况下,我们的PHP文件会出现一些非常难以排查的错误,比如输出大白页,调错无从下手。这是可能PHP的错误等级屏蔽了一些非致命的错误,造成没有任何错误提示。所以了解和熟悉PHP错误等级,或许能够成为调错的新方法。
php.ini中的错误报告等级默认情况下,PHP错误报告等级是E_NOTICE, E_ALL表示报告所有非致命错误,因为这些错误可能会导致大问题(比如使用了未定义的变量)。
显示所有的错误,除了提醒和编码标准化警告。
错误报告是位字段。可以将数字加起来得到想要的错误报告等级。
E_ALL - 所有的错误和警告(不包括 E_STRICT)
E_ERROR - 致命性的运行时错误
E_WARNING - 运行时警告(非致命性错误)
E_PARSE - 编译时解析错误
E_NOTICE - 运行时提醒(这些经常是你代码中的bug引起的,也可能是有意的行为造成的。)
E_STRICT - 编码标准化警告,允许PHP建议如何修改代码以确保最佳的互操作性向前兼容性。
E_CORE_ERROR - PHP启动时初始化过程中的致命错误
E_CORE_WARNING - PHP启动时初始化过程中的警告(非致命性错)
E_COMPILE_ERROR - 编译时致命性错
E_COMPILE_WARNING - 编译时警告(非致命性错)
E_USER_ERROR - 用户自定义的错误消息
E_USER_WARNING - 用户自定义的警告消息
E_USER_NOTICE - 用户自定义的提醒消息
如果设置为:E_ALL | E_STRICT,则表示记录所有的错误信息,可能会导致网站出现一大堆的错误代码;但是对于程序员来说应该说是一件好事,可以把代码优化到最优;一些非致命性错误虽然不影响程序的运行,但是会使PHP的负担加重,通常是增加了网站进程(例如IIS的应用程序池)的负担。
调整PHP中的错误报告
一旦把PHP设置成呈现出发生了哪些错误,你可能想调整错误报告的级别。可以将作为一个整体或独立脚本的PHP安装设置成报告或忽略不同的错误级别。表7-1列出了大多数级别,但是它们一般是以下3类级别之一:
l 注意(notice),这不会阻止脚本的执行,并且可能不一定是一个问题;
l 警告(warning),这指示一个问题,但是不会阻止脚本的执行;
l 错误(error),这会阻止脚本继续执行(包括常见的解析错误,它从根本上阻止脚本运行)。
表7-1 PHP的错误报告设置,与error_reporting()函数一起使用,或者在php.ini文件中使用。注意,E_ALL的值不同于旧版的PHP并且不包括E_STRICT(但在PHP 6中存在)
编 号 |
常 量 |
报 告 |
1 |
E_ERROR |
致命的运行时错误(它会阻止脚本的执行) |
2 |
E_WARNING |
运行时警告(非致命的错误) |
(续)
编 号 |
常 量 |
报 告 |
4 |
E_PARSE |
解析错误 |
8 |
E_NOTICE |
注意(事情可能是或者可能不是一个问题) |
256 |
E_USER_ERROR |
用户生成的错误消息,由trigger_error()函数生成 |
512 |
E_USER_WARNING |
用户生成的警告,由trigger_error()函数生成 |
1024 |
E_USER_NOTICE |
用户生成的注意,由trigger_error()函数生成 |
2048 |
E_STRICT |
关于兼容性和互操作性的建议 |
8191 |
E_ALL |
所有的错误、警告和建议 |
Statement:The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn