1 配置指令
1) 设置错误报告级别
error_reporting指令确定报告的级别,共有16个不同的级别。
级别 描述 E_ALL 所有错误和警告 E_COMPLIE_ERROR 致命的编译时错误 E_COMPLIE_WARNING 编译时警告 E_CORE_ERROR E_CORE_ WARNING E_DEPRECATED 未来版本中将移除的特性的警告 E_ERROR 运行时错误 E_NOTICE 一般提示信息 E_PARSE 编译时解析错误 E_RECOVERABLE_ERROPR 几乎致命的错误 PHP5.2引入 E_STRICT PHP版本可移植性建议 E_USER_ DEPRECATED 用户使用计划在PHP未来版本中移除的特性时的警告 E_USER_NOTICE 用户导致的一般信息 E_USER_WARNING 用户导致的警告 E_WARNING 运行时警告
例子:
# 在开发阶段,报告所有错误,将来版本E_ALL可能并不包含E_STRICT error_reporting = E_ALL & E_STRICT # 只考虑致命的运行时错误、解析错误和核心错误 error_reporting = E_ERROR | E_PARSE | E_CORE_ERROR # 希望报告除了E_USER_WARNING级之外的所有错误 error_reporting = E_ALL & ~E_USER_WARNING
2 在浏览器上显示错误
启用display_errors时,将显示满足error_reporting所定义规则的所有错误。一般在开始测试期间启用此命令。
注意:PHP5.2中引入了一个名为error_get_last()的函数。它返回一个关联数组,包含最后出现的错误的类型、消息、文件以及行号。
3 显示启动错误
启用display_startup_errors指令会显示PHP引擎初始化时遇到的所有错误。
4 记录错误
是否记录错误由log_errors指令规定,而error_log指定错误记录的位置
5 标识日志文件
错误可以发送给系统日志后台程序,或者送往error_log指令指定的文件。
6 设置日志行的最大长度
log_errors_max_len指令设置每个日志项的最大长度,默认1024字节。设置为0表示不指定最大长度。
7 忽略重复的错误
ignore_repeated_errors
8 忽略相同位置发生的错误
ignore_repeated_source
9 在变量中存储最近发生的错误
启用track_errors指令会使PHP在变量$php_errormsg中存储最近发生的错误消息。
关于更多更详细内容,可以参考:http://cn2.php.net/manual/zh/errorfunc.configuration.php
注意:log_errors决定了是否记录PHP日志,但是记录的位置是由error_log决定的,默认设置是空的,这样PHP的错误日志将发送到Web服务器(如果该配置没有设置,则错误信息会被发送到 SAPI 错误记录器),由Web服务器记录这些日志,但是也可以指定一个文件给它,让它记录到这个文件去,或者设置为syslog让其交给系统处理。不过,在使用FastCGI的PHP中,错误并没有被Web服务器记录。在PHP作为Apache模块的测试中,PHP的错误日志的确记录到了Apache的error_log中。
PHP配置例子:
; 错误报告级别 error_reporting = E_ALL & ~E_DEPRECATED ; 是否显示错误 display_errors = Off ; 是否显示启动错误 display_startup_errors = Off ; 是否启用错误日志记录 log_errors = On ; 日志记录最大长度 log_errors_max_len = 1024 ignore_repeated_errors = Off ignore_repeated_source = Off ;内存泄露 report_memleaks = On ; This setting is on by default. ;report_zend_debug = 0 track_errors = Off ;xmlrpc_errors = 0 ;xmlrpc_error_number = 0 html_errors = Off ;docref_root = "/phpmanual/" ;docref_ext = .html ;error_prepend_string = "" ;error_append_string = "" ;error_log = php_errors.log
如果PHP的配置指令error_log设置为syslog,这表示把日志发送到syslog来处理,如果是这种方式,PHP还提供了openlog()、close-log()和syslog()函数了定制发送的日志。