PHP的错误报错级别设置原理简析
2023-09-14 08:57:26 时间
原理简析
摘录php.ini文件的默认配置(php5.4):
; Common Values:
; E_ALL (Show all errors, warnings and notices including coding standards.)
; E_ALL & ~E_NOTICE (Show all errors, except for notices)
; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.)
; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; http://php.net/error-reporting
error_reporting = E_ALL & ~E_NOTICE
默认是E_ALL & ~E_NOTICE
。这句话的意思是Show all errors, except for notices
,即显示除了NOTICE类型的所有错误。为什么运算符是& ~
呢?
先看PHP手册预定义常量
:
摘录一部分常量:
值 常量 说明
1 E_ERROR ( integer ) 致命的运行时错误。这类错误一般是不可恢复的情况,例如内存分配导致的问题。后果是导致脚本终止不再继续运行。
2 E_WARNING ( integer ) 运行时警告 (非致命错误)。仅给出提示信息,但是脚本不会终止运行。
4 E_PARSE ( integer ) 编译时语法解析错误。解析错误仅仅由分析器产生。
8 E_NOTICE ( integer ) 运行时通知。表示脚本遇到可能会表现为错误的情况,但是在可以正常运行的脚本里面也可能会有类似的通知。
16 E_CORE_ERROR ( integer ) 在PHP初始化启动过程中发生的致命错误。该错误类似 E_ERROR ,但是是由PHP引擎核心产生的。
2048 E_STRICT ( integer ) 启用 PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。
30719 E_ALL ( integer ) E_STRICT 出外的所有错误和警告信息。
E_ALL:30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously
上面的值(数值或者符号)用于建立一个二进制位掩码,来制定要报告的错误信息。可以使用按位运算符来组合这些值或者屏蔽某些类型的错误。请注意,在 php.ini 之中,只有'|', '~', '!', '^' 和 '&' 会正确解析。
看下面的分析:
E_ALL & ~E_NOTICE
=> 111011111111111 & ~ 1000
=> 111011111111111 & 0111
=> 111011111110111
估计看了上面大家就知道是怎么回事了,为什么不是E_ALL & E_NOTICE
。
& ~E_NOTICE
刚好使第四位的值置0。如果去掉~
则达不到效果。
调整错误报告级别
1、可以修改php.ini进行配置,找到error_reporting
2、ini_set()
和error_reporting()
:
ini_set('display_errors', 1);
error_reporting(E_ALL & ~E_NOTICE);//排除NOTICE错误
error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR);
//只考虑致命的运行时错误、新解析错误和核心错误
相关文章
- php连接ldap服务器,使用PHP连接LDAP服务器[通俗易懂]
- 【php】关闭PHP错误提示方法,防止错误信息泄露
- 【错误记录】Android Studio 中 build.gradle 配置 buildFeatures prefab 错误处理 ( AS 4.1 以上开发环境 | Gradle及插件版本 )
- 【错误记录】Android Studio 4.2.1 编译报错 ( 设置支持的 Java 和 Kotlin 版本 | java.lang.BootstrapMethodError )
- 教你怎样用Oracle方便地查看报警日志错误
- 服务器错误解决1005错误:MySQL 服务器怎么做?(1005mysql)
- 请不要重复犯我在学习Python和Linux系统上的错误
- PHP轻松获取MySQL错误信息教程(php获取mysql错误)
- MySQL系统错误2:如何解决?(mysql发生系统错误2)
- Oracle数据库的隐式转换:避免类型不一致的错误!(oracle隐式转换)
- PHP结合MySQL实现数据库事务锁定机制(php mysql 锁)
- PHP实现从MSSQL中数据显示(php 显示 mssql)
- PHP连接MSSQL:让你更快更好地实现数据互通(php接mssql)
- 解决Redis连接出错深入分析错误日志(redis 连接错误日志)
- Oracle JRE出现错误必须解决(oracle jre错误)
- PHPsyntaxerror,unexpected$end错误的一种原因及解决
- sqlserver此数据库没有有效所有者错误的解决方法
- php入门学习知识点二PHP简单的分页过程与原理
- php入门学习知识点三PHP上传
- win7安装oracle10g提示程序异常终止发生未知错误
- nginx提示:500InternalServerError错误的解决方法
- PHP错误Allowedmemorysizeof67108864bytesexhausted的3种解决办法