Chinaunix首页 | 论坛 | 博客
  • 博客访问: 327029
  • 博文数量: 206
  • 博客积分: 1040
  • 博客等级: 少尉
  • 技术积分: 1756
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-09 17:22
文章分类

全部博文(206)

文章存档

2015年(3)

2014年(147)

2013年(2)

2012年(54)

我的朋友

分类: 系统运维

2012-07-05 16:19:29

在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:

阅读(6074) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~