php e all e notic,PHP error_reporting(E_ALL ^ E_NOTICE)一些资料整理

在php中我们对错误的处理会常用到error_reporting函数了,大家可以看到最多的是error_reporting(E_ALL ^ E_NOTICE)了,这个到底什么意思呢,下面我来来看看。

我们在程序中可能经常看到这么一个函数<?php

function setErrorReporting() {

//从配置文件读取当前是否为开发环境

if (DEV_ENV == true) {

ini_set("error_reprorting", "E_ALL & ~E_NOTICE");

ini_set("display_errors", "on");

} else {

error_reporting(E_ALL);

ini_set('display_errors', 'Off');

ini_set("log_errors", "On");

ini_set('error_log', '/var/log/phperror.log');

}

}

?>

举例说明:

在Windows环境下:原本在php4.3.0中运行正常的程序,在4.3.1中为何多处报错,大体提示为:Notice:Undefined varialbe:变量名称.

例如有如下的代码:<?php

if (!$tmp_i) {

$tmp_i = 10;

}

?>

在4.3.0中运行正常,在4.3.1中运行会提示Notice:Undefined varialbe:tmp_i

问题如下:1.问题出在哪里?

2.应如何修改这段代码?

3.不改段代码,如何修改php.ini中的设置使原来在4.3.0中的程序在4.3.1的环境下运行正常而不出现这个错误提示.

解决办法:

在程序开头加一句:<?php

error_reporting(E_ALL & ~E_NOTICE);

或error_reporting(E_ALL ^ E_NOTICE);

?>

或者修改php.ini:<?php

error_reporting = E_ALL & ~E_NOTICE

?>

有关error_reporting()函数: error_reporting() 设置 PHP 的报错级别并返回当前级别。

; 错误报告是按位的。或者将数字加起来得到想要的错误报告等级。

; E_ALL - 所有的错误和警告

; E_ERROR - 致命性运行时错

; E_WARNING - 运行时警告(非致命性错)

; E_PARSE - 编译时解析错误

; E_NOTICE - 运行时提醒(这些经常是是你的代码的bug引起的,也可能是有意的行为造成的。(如:基于未初始化的变量自动初始化为一个空字符串的事实而使用一个未初始化的变量)

; E_CORE_ERROR - 发生于PHP启动时初始化过程中的致命错误

; E_CORE_WARNING - 发生于PHP启动时初始化过程中的警告(非致命性错)

; E_COMPILE_ERROR - 编译时致命性错

; E_COMPILE_WARNING - 编译时警告(非致命性错)

; E_USER_ERROR - 用户产生的出错消息

; E_USER_WARNING - 用户产生的警告消息

; E_USER_NOTICE - 用户产生的提醒消息

E_NOTICE 表示一般情形不记录,只有程式有错误情形时才用到,例如企图存取一个不存在的变数,或是呼叫 stat() 函式检视不存在的档案。

E_WARNING 通常都会显示出来,但不会中断程式的执行。这对除错很有效。例如:用有问题的常规表示法呼叫 ereg()。

E_ERROR 通常会显示出来,亦会中断程式执行。意即用这个遮罩无法追查到记忆体配置或其它的错误。

E_PARSE 从语法中剖析错误。

E_CORE_ERROR 类似 E_ERROR,但不包括 PHP 核心造成的错误。

E_CORE_WARNING 类似 E_WARNING,但不包括 PHP 核心错误警告

使用方法:

error_reporting(0);//禁用错误报告

error_reporting(E_ALL ^ E_NOTICE);//显示除去 E_NOTICE 之外的所有错误信息

error_reporting(E_ALL^E_WARNING^E_NOTICE);//显示除去E_WARNING E_NOTICE 之外的所有错误信息

error_reporting(E_ERROR | E_WARNING | E_PARSE);//显示运行时错误,与error_reporting(E_ALL ^ E_NOTICE);效果相同。error_reporting(E_ALL);//显示所有错误

error_reporting(0)

error_reporting(255);

是列出所有提示

error_reporting(0);

是不显示所有提示

建议使用

error_reporting(7);

只显示严重错误

1 E_ERROR 致命的运行时错误

2 E_WARNING 运行时警告(非致命性错误)

4 E_PARSE 编译时解析错误

8 E_NOTICE 运行时提醒(经常是bug,也可能是有意的)

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 用户自定义的提醒(经常是bug,也可能是有意的)

2048 E_STRICT 编码标准化警告(建议如何修改以向前兼容)

4096 E_RECOVERABLE_ERROR 接近致命的运行时错误,若未被捕获则视同E_ERROR

6143 E_ALL 除E_STRICT外的所有错误(PHP6中为8191,即包含所有)

转载随意,但请附上文章地址:-)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值