在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