PHP错误级别
2016-05-18 14:43
513 查看
php.ini
文件中有许多配置设置。您应当已经设置好自己的 php.ini
文件并把它放在合适的目录中,就像在 Linux上安装
PHP和
Apache 2的文档说明中所示的那样。在调试
PHP应用程序时,应当知道两个配置变量。下面是这两个变量及其默认值:
display_errors = Off
error_reporting = E_ALL
通过在 php.ini文件中搜索它们,可以发现这两个变量当前的默认值。display_errors变量的目的很明显
——它告诉
PHP是否显示错误。默认值是
Off。但是,要让开发过程更加轻松,请把这个值设为On:
display_errors = On
error_reporting 变量的默认值是E_ALL。这个设置会显示从不良编码实践到无害提示到出错的所有信息。E_ALL对于开发过程来说有点太细,因为它在屏幕上为一些小事(例如变量未初始化)也显示提示,会搞糟浏览器的输出。我只想看到错误和不良编码实践,但是不想看到无害的提示。所以,请用以下值代替error_reporting
的默认值:
error_reporting = E_ALL & ~E_NOTICE
重新启动
Apache,就全部设置好了。接下来,将学习如何在 Apache上做同样的事。
服务器上的错误报告
依赖于 Apache正在做的工作,在
PHP中打开错误报告可能没法工作,因为在计算机上可能有多个
PHP版本。有时很难区分
Apache正在使用哪个
PHP版本,因为
Apache只能查看一个
php.ini文件。不知道
Apache正在使用哪个
php.ini文件配置自己是一个安全问题。但是,有一种方法可以在
Apache中配置
PHP变量,从而保证设置了正确的出错级别。
而且,最好知道如何在服务器端设置这些配置变量,以否决或抢占php.ini
文件,从而提供更高级别的安全性。
在配置 Apache时,应该已经接触过
/conf/httpd.conf中
http.conf文件中的基本配置。
要做在php.ini文件中已经做过的事,请把下列各行添加到httpd.conf,覆盖任何php.ini
文件:
php_flag display_errors on
php_value error_reporting 2039
这会覆盖在 php.ini文件中为
display_errors已经设置的标志,以及
error_reporting的值。值
2039代表
E_ALL & ~E_NOTICE。如果愿意采用E_ALL,请把值设为2047。同样,还是要重启Apache。
接下来,要在服务器上测试错误报告。
关于error_reporting()这个函数,它是可以屏蔽到一些错误信息,但是PHP核心造成的错误,是无法屏蔽的,因为PHP核心造成的错误会直接导致PHP文件编译失败,因为书写格式没有按照PHP的编码规则写而造成的错误,是无法屏蔽的
定义和用法:
error_reporting()设置
PHP 的报错级别并返回当前级别。
函数语法:
error_reporting(report_level)
如果参数
level 未指定,当前报错级别将被返回。下面几项是 level可能的值:
值 常量 描述
现在,我将其总结如下:
error_reporting变量的默认值是 E_ALL & ~E_NOTICE
开发时,最佳的值为:
E_ALL | E_STRICT
如果设置为:error_reporting(E_ALL | E_STRICT),则表示记录所有的错误信息
可能会导致网站出现一大堆的错误代码;但是对于程序员来说应该说是一件好事,可以把代码优化到最优; 一些非致命性错误虽然不影响程序的运行,但是会加重PHP的负担.
最后,晒出英文版的对照表:
文件中有许多配置设置。您应当已经设置好自己的 php.ini
文件并把它放在合适的目录中,就像在 Linux上安装
PHP和
Apache 2的文档说明中所示的那样。在调试
PHP应用程序时,应当知道两个配置变量。下面是这两个变量及其默认值:
display_errors = Off
error_reporting = E_ALL
通过在 php.ini文件中搜索它们,可以发现这两个变量当前的默认值。display_errors变量的目的很明显
——它告诉
PHP是否显示错误。默认值是
Off。但是,要让开发过程更加轻松,请把这个值设为On:
display_errors = On
error_reporting 变量的默认值是E_ALL。这个设置会显示从不良编码实践到无害提示到出错的所有信息。E_ALL对于开发过程来说有点太细,因为它在屏幕上为一些小事(例如变量未初始化)也显示提示,会搞糟浏览器的输出。我只想看到错误和不良编码实践,但是不想看到无害的提示。所以,请用以下值代替error_reporting
的默认值:
error_reporting = E_ALL & ~E_NOTICE
重新启动
Apache,就全部设置好了。接下来,将学习如何在 Apache上做同样的事。
服务器上的错误报告
依赖于 Apache正在做的工作,在
PHP中打开错误报告可能没法工作,因为在计算机上可能有多个
PHP版本。有时很难区分
Apache正在使用哪个
PHP版本,因为
Apache只能查看一个
php.ini文件。不知道
Apache正在使用哪个
php.ini文件配置自己是一个安全问题。但是,有一种方法可以在
Apache中配置
PHP变量,从而保证设置了正确的出错级别。
而且,最好知道如何在服务器端设置这些配置变量,以否决或抢占php.ini
文件,从而提供更高级别的安全性。
在配置 Apache时,应该已经接触过
/conf/httpd.conf中
http.conf文件中的基本配置。
要做在php.ini文件中已经做过的事,请把下列各行添加到httpd.conf,覆盖任何php.ini
文件:
php_flag display_errors on
php_value error_reporting 2039
这会覆盖在 php.ini文件中为
display_errors已经设置的标志,以及
error_reporting的值。值
2039代表
E_ALL & ~E_NOTICE。如果愿意采用E_ALL,请把值设为2047。同样,还是要重启Apache。
接下来,要在服务器上测试错误报告。
关于error_reporting()这个函数,它是可以屏蔽到一些错误信息,但是PHP核心造成的错误,是无法屏蔽的,因为PHP核心造成的错误会直接导致PHP文件编译失败,因为书写格式没有按照PHP的编码规则写而造成的错误,是无法屏蔽的
定义和用法:
error_reporting()设置
PHP 的报错级别并返回当前级别。
函数语法:
error_reporting(report_level)
如果参数
level 未指定,当前报错级别将被返回。下面几项是 level可能的值:
值 常量 描述
现在,我将其总结如下:
数字 | 常量 | 说明 |
1 | E_ERROR | 致命错误,脚本执行中断,就是脚本中有不可识别的东西出现 举例: Error:Invalid parameters. Invalid parameter name |
2 | E_WARNING | 部分代码出错,但不影响整体运行 举例: Warning: require_once(E:/include/config_base.php) |
4 | E_PARSE | 字符、变量或结束的地方写规范有误 举例: Parse error: syntax error, unexpected $end in |
8 | E_NOTICE | 一般通知,如变量未定义等 举例: Notice: Undefined variable: p in E:\web\index.php on line 17 |
16 | E_CORE_ERROR | PHP进程在启动时,发生了致命性错误 举例: 暂无 |
32 | E_CORE_WARNING | 在PHP启动时警告(非致命性错误) 举例: 暂无 |
64 | E_COMPILE_ERROR | 编译时致命性错误 举例: 暂无 |
128 | E_COMPILE_WARNING | 编译时警告级错误 举例: 暂无 |
256 | E_USER_ERROR | 用户自定义的错误消息 举例: 暂无 |
512 | E_USER_WARNING | 用户自定义的警告消息 举例: 暂无 |
1024 | E_USER_NOTICE | 用户自定义的提醒消息 举例: 暂无 |
2047 | E_ALL | 以上所有的报错信息,但不包括E_STRICT的报错信息 举例: 暂无 |
2048 | E_STRICT | 编码标准化警告,允许PHP建议如何修改代码以确保最佳的互操作性向前兼容性。 |
开发时,最佳的值为:
E_ALL | E_STRICT
如果设置为:error_reporting(E_ALL | E_STRICT),则表示记录所有的错误信息
可能会导致网站出现一大堆的错误代码;但是对于程序员来说应该说是一件好事,可以把代码优化到最优; 一些非致命性错误虽然不影响程序的运行,但是会加重PHP的负担.
最后,晒出英文版的对照表:
1 | E_ERROR | Fatal run-time errors. Errors that can not be recovered from. Execution of the script is halted |
2 | E_WARNING | Non-fatal run-time errors. Execution of the script is not halted |
4 | E_PARSE | Compile-time parse errors. Parse errors should only be generated by the parser |
8 | E_NOTICE | Run-time notices. The script found something that might be an error, but could also happen when running a script normally |
16 | E_CORE_ERROR | Fatal errors at PHP startup. This is like an E_ERROR in the PHP core |
32 | E_CORE_WARNING | Non-fatal errors at PHP startup. This is like an E_WARNING in the PHP core |
64 | E_COMPILE_ERROR | Fatal compile-time errors. This is like an E_ERROR generated by the Zend Scripting Engine |
128 | E_COMPILE_WARNING | Non-fatal compile-time errors. This is like an E_WARNING generated by the Zend Scripting Engine |
256 | E_USER_ERROR | Fatal user-generated error. This is like an E_ERROR set by the programmer using the PHP function trigger_error() |
512 | E_USER_WARNING | Non-fatal user-generated warning. This is like an E_WARNING set by the programmer using the PHP function trigger_error() |
1024 | E_USER_NOTICE | User-generated notice. This is like an E_NOTICE set by the programmer using the PHP function trigger_error() |
2048 | E_STRICT | Run-time notices. PHP suggest changes to your code to help interoperability and compatibility of the code |
4096 | E_RECOVERABLE_ERROR | Catchable fatal error. This is like an E_ERROR but can be caught by a user defined handle (see also set_error_handler()) |
8191 | E_ALL | All errors and warnings, except level E_STRICT (E_STRICT will be part of E_ALL as of PHP 6.0) |
相关文章推荐
- Ubuntu 14.04 配置 LAMP+phpMyAdmin PHP(5.5.9)开发环境
- Sublime Text 3 PHP代码格式化插件phpfmt的安装和配置
- yii2 checkbox 的使用实例
- cakePHP的controller回调
- IIS7配置PHP简要说明
- vsftpd配置虚拟用户
- (Jmeter 二)使用JMeter进行FTP测试
- PHP api方法总结
- php错误级别
- tp上传图片
- session详解
- PHP 发送与接收流文件
- IO流(Input Output Stream)总结1
- PHP常用函数之-数组
- [PHP] Yaf框架的简单安装使用
- PHP的swoole扩展安装方法详细教程
- php常用函数之-字符串函数
- yii2图片上传组件,多图上传,图片上传预览
- Notepad++插件NppFTP安装使用及配置文件说明
- PHP session storage