可以通过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);
这小段代码将关闭错误报告,允许我们执行一些可能产生警告的代码,而我们并不希望看到这些警告。
永久关闭出错报告是非常糟糕的想法,因为这样很难发现错误并纠正它。