www.baike369.com
百科369 > PHP教程 > PHP关于在php.ini中的错误报告参数

PHP关于在php.ini中的错误报告参数


PHP关于在php.ini中的错误报告参数

我们有必要再次提及error_reporting和错误显示的问题,有一些相关的参数需要说明。

在php.ini配置文件中,error_reporting的格式如下:

error_reporting(Integer)

该参数是PHP错误报告的级别设置,是服务器环境上脚本的默认定义。常见参数如下:

1. E_ALL:表示显示所有错误。

2. E_ALL&~E_NOTICE:表示显示所有错误,但是警告(Notice)信息将被忽略,该参数根据display_errors(Boolean)参数的设置来处理是否显示错误。

默认display_errors的参数为Off,如果在error_reporting打开了错误定义,但如果没有同时把该参数设置为On,同样不会在客户端显示错误。

另外,display_startup_errors()的参数也决定了PHP启动后即显示错误控制,这是在开发调试C扩展时需要的参数,默认为Off。

error_prepend_string(String)

这是一串和错误信息附加在一起显示在浏览器的参数。

error_append_string(String)

这是一连串错误信息显示出来后,在浏览器展示的字符串信息。

track_errors(Boolean)

当此设置被开启时,则在PHP发生错误的同时生成一个叫$php_errormsg的变量,该变量包含错误的相关信息。

html_errors(Boolean)

该参数控制当错误发生后,将显示一个HTML格式的错误信息。请注意,不能将该参数应用于PHP CLI模式。

xmlrpc_errors(Boolean)

这一参数设定是否显示调用XML-RPC时的异常。

xmlrpc_error_number(Integer)

如果上面的参数过大,可以使用本参数确定使用xmlrpc时显示的错误代号。

log_errors(Boolean)

这一参数设置是否记录错误日志。日志存放的路径由error_log参数确定。默认情况下,附加保存在Web服务器的错误日志中。

log_errors_max_len(Integer)

这一参数用于记录日志,如果超过参数中定义的长度,则将按此规则截断。

error_log(String)

该参数用于定义记录日志的路径。默认情况下,它将保存在和Apache Web服务器相同的路径里,需要我们指定一个文件名。

ignore_repeated_errors(Boolean)

该参数打开后,如果相同的错误发生过两次以上,那么它将只显示一次,多于两次的错误将被忽略掉。

ignore_repeated_source(Boolean)

该参数如果被开启,如在一个文件某行出现错误超过一次,那么它也只提示一次,这个参数与上面是否开启无关。

另外,在PHP 5.0增加了一个E_STRICT的错误报告级别(常量值为2048)之后,PHP 5.2又新增了一个错误报告级别:

E_RECOVERABLE_ERROR

其常量值为4096,这个级别的错误主要是从E_ERROR中可以被用户自定义的错误处理程序(一般通过set_error_handler()函数指定)所捕捉的情况转化而来。

如果一个E_RECOVERABLE_ERROR未被捕捉并处理,那么它的表现就和所有PHP版本中的E_ERROR一样会导致程序中止。在错误日志中,该类型的错误将被记录成“可捕捉的致命错误(Catchable fatal error)”。

在开发环境时,我们对php.ini中有关错误显示地设置应该是下面的样式:

error_reporting = E_ALL
display_errors = On
html_errors = On
log_errors = Off

我们看到,Notice是打开R,可以提示我们编写更安全和可靠的代码。而且,根据浏览器提示的错误我们会很快找到程序问题所在,从而更快地完成开发任务。

如果是已经上线的运营系统,我们需要进行一些优化设置:

error_reporting = E_ALL & ~E_NOTICE
display_errors = off
log_errors = on
html_errors = off
error_log = "/var/log/httpd/my-php-error.log"
ignore_repeated_errors = on
ignore_repeated_source = on

可以看到,我们已经把所有错误屏蔽,这样即便发生错误也不会显示在客户端,错误日记将被记录到/var/log/httpd/my-php-error.log文件中。HTML格式已经被关闭,重复的错误不会重复记录,我们可以在日后维护工作中检查该文件,查看相关的错误报告内容。

值得再次提及的是,我们记录PHP的错误信息是提供给开发者和网络管理员用的,而不是给用户看的。千万不要把PHP的错误信息暴露给用户,如果他们看到网站的异常,用户会对我们的网站或系统产生歧义,对安全性表示怀疑,或被别有用心的人加以利用,这是非常不值得的。

Copyright© 2011-2016 www.baike369.com All Rights Reserved