首页 » PHP和MySQL Web开发(原书第4版) » PHP和MySQL Web开发(原书第4版)全文在线阅读

《PHP和MySQL Web开发(原书第4版)》26.4 改变错误报告设置

关灯直达底部

可以通过php.ini文件或在每个脚本中进行错误报告设置。

在默认情况下,要改变所有脚本的错误报告,可以修改php.ini文件里的下面4行。

error_reporting=E_ALL&~E_NOTICE

display_errors=On

log_errors=Off

track_errors=Off

默认的全局设置如下:

■报告除了通知之外的所有错误

■以HTML形式将出错信息输出到标准输出接口

■不将错误信息作为日志记录到磁盘

■不跟踪错误,将错误保存在变量$php_errormsg中

最可能要改变的是将错误报告级别提高到E_ALL|E_STRICT。这将导致报告脚本中可能出现的所有通知,这些通知可能指示一个错误,也可能是因为程序员想利用PHP弱类型的特性,还可能因为自动将变量初始化为0这样的事实。

在调试过程中,我们会发现提高error_reporting的级别是有意义的。在产品代码中,如果为自己提供了有用的错误信息,在将error_reporting的级别提高的同时,需将display_errors选项关闭,并将log_errors选项开启,这样会使代码看起来更加专业一些。如果出现错误,可以在日志里看到错误的详细信息。

将track_errors选项打开可以帮助解决用户自己代码中的错误,而不是让PHP提供其默认的功能。尽管PHP提供了实用的出错信息,但当出错的时候,它的默认行为却非常糟糕。

在默认情况下,当脚本出现一个致命错误的时候,PHP将输出如下所示的信息:

<br>

<b>Error Type</b>:error message in<b>path/file.php</b>

on line<b>lineNumber</b><br>

并且停止执行脚本。对于非致命错误,也会输出同样的信息,但是脚本正常执行。

该HTML的输出将直接发送给错误的标准输出,但是看起来很乏味。这样的出错信息不可能与网站其他部分的外观相协调。如果页面的整个内容显示在一个表格里的话,它也可能导致Netscape用户根本看不到输出。这是因为打开了的HTML没有关闭表格元素,例如:

<table>

<tr><td>

<br>

<b>Error Type</b>:error message in<b>path/file.php</b>

on line<b>lineNumber</b><br>

以上HTML代码将在某些浏览器中显示为一个空屏。

我们没有必要保留PHP的默认错误处理行为,甚至对所有的文件使用同样的设置。要改变当前脚本的错误报告级别,可以调用error_reporting函数。

传递一个错误报告常量或几个错误报告常量的结合,与php.ini中类似的指令一样,可以用来设置错误级别。error_reporting函数将返回前一个错误级别。该函数的常见使用方式如下所示:

//turn off error reporting

$old_level=error_reporting(0);

//here,put code that will generate warnings

//turn error reporting back on

error_reporting($old_level);

这小段代码将关闭错误报告,允许我们执行一些可能产生警告的代码,而我们并不希望看到这些警告。

永久关闭出错报告是非常糟糕的想法,因为这样很难发现错误并纠正它。