# PHP函数之error\_reporting(E\_ALL ^ E\_NOTICE)详细说明 >在看帝国cms的connect.php是发现第一句是`error\_reporting(E\_ALL ^ E\_NOTICE);`以前也没注意过这个语句,知道是设置错误提示的,但不清楚具体怎样设置使用。下面从网上摘抄了些东西,总结了一下。 ## 在Windows环境下:原本在php4.3.0中运行正常的程序,在4.3.1中为何多处报错,大体提示为:Notice:Undefined varialbe:变量名称. 例如有如下的代码: 复制代码代码如下: ``` 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的环境下运行正常?而不出现这个错误提示. --- ## 解决办法: 在程序开头加一句: `error\_reporting(E\_ALL & ~E\_NOTICE)`; 或`error\_reporting(E\_ALL ^ E\_NOTICE); ` 或者 修改`php.ini` `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 - 用户产生的提醒消息 使用方法: 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);//显示所有错误