如何调整Codeigniter错误报告级别

阅读更多

 

在CI框架中加载httpClient时抛出以下错误:

 

A PHP Error was encountered
Severity: Notice

Message: Undefined variable: host

 

 

在默认的普通PHP文件中输出一个未声明的变量是不会报错误的,但使用codeigniter框架,却会抛出错误。为了不让类似的错误信息显示出来,于是阅读了codeigniter框架代码。在index.php中找到了配置错误级别的方法error_reporting()。

 

error_reporting() 设置 PHP 的报错级别并返回当前级别。

语法
error_reporting(report_level)
如果参数 level 未指定,当前报错级别将被返回。下面几项是 level 可能的值:

1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
2047 E_ALL
2048 E_STRICT

 

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

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

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

E_PARSE 从语法中剖析错误。
E_CORE_ERROR 类似 E_ERROR,但不包括 PHP 核心造成的错误。
E_CORE_WARNING 类似 E_WARNING,但不包括 PHP 核心错误警告。

 

 

error_reporting()函数可以屏蔽掉错误信息,但是PHP 核心造成的错误,是无法屏蔽的,因为PHP 核心造成的错误会直接导致PHP文件编译失败,因为书写格式没有按照PHP的编码规则写而造成的错误,是无法屏蔽的。

 

所以,将error_reporting(E_ALL)改成error_reporting(E_ALL ^ E_NOTICE)就可以屏蔽掉Notice级别的错误。以下列举了一些常用设置:

 

// Turn off all error reporting;
error_reporting(0);

 

// Report simple running errors;
error_reporting(E_ERROR | E_WARNING | E_PARSE);

 

// Reporting E_NOTICE can be good too (to report uninitialized variables or catch variable name misspellings …);
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

 

// Report all errors except E_NOTICE. This is the default value set in php.ini;
error_reporting(E_ALL ^ E_NOTICE);

 

// Report all PHP errors (bitwise 63 may be used in PHP 3);
error_reporting(E_ALL);

 

// Same as error_reporting(E_ALL);
ini_set(’error_reporting’, E_ALL);

 

For more info visit:  http://www.php.net/error_reporting

 

你可能感兴趣的:(如何调整Codeigniter错误报告级别)