最新的Web开发教程
 

PHP 5个错误处理函数


PHP错误简介

误差函数用于处理错误处理和日志记录。

错误功能允许我们定义自己的错误处理规则,以及修改错误可以被记录的方式。

日志记录功能,使我们能够直接发送消息给其他机器,电子邮件或系统日志。

错误报告功能使我们能够定制给出什么样的水平和类型的错误反馈。


安装

PHP的错误函数是PHP核心的一部分。 没有安装是需要使用这些功能。


运行时配置

误差函数的行为受php.ini的影响。

错误和日志记录配置选项:

名称 默认 描述 多变
使用error_reporting 空值 设置错误报告级别(整数或命名常量) PHP_INI_ALL
的display_errors “1” 指定错误是否应该打印在屏幕上,还是需要从用户隐藏。
注:此功能不应该在生产系统中使用(只支持你的发展)
PHP_INI_ALL
display_startup_errors “0” 即使display_errors设置为上,不显示PHP的启动顺序期间发生的错误
注:强烈建议保持display_startup_errors关闭,除了调试
PHP_INI_ALL
log_errors “0” 定义脚本错误消息是否应该被记录到服务器错误日志或者error_log中。
注:强烈建议使用错误日志,而不是错误的显示生产网站
PHP_INI_ALL
log_errors_max_len “1024” 以字节为单位的log_errors的最大长度。 值"0"可以用于不应用任何最大长度在所有。 该长度被施加到记录错误,错误显示,并且还$ php_errormsg中(available since PHP 4.3) PHP_INI_ALL
ignore_repeated_errors “0” 指定是否记录重复的错误消息。 当设置为"1" ,将无法登录与在同一行的同一文件的重复错误错误(available since PHP 4.3) PHP_INI_ALL
ignore_repeated_source “0” 指定是否记录重复的错误消息。 当设置为"1"它将不记录与来自不同的文件或源极线的重复错误的错误(available since PHP 4.3) PHP_INI_ALL
report_memleaks “1” 如果设置为"1" (the default) ,该参数将显示由Zend的内存管理器检测内存泄漏的报告(available since PHP 4.3) PHP_INI_ALL
的track_errors “0” 如果设置为"1" ,最后的错误消息将永远存在于变量$ php_errormsg中 PHP_INI_ALL
html_errors “1” 关闭HTML标签错误信息 PHP_INI_ALL
PHP_INI_SYSTEM在PHP <= 4.2.3。
xmlrpc_errors “0” 关闭正常的错误报告和格式错误的XML-RPC错误信息(available since PHP 4.1) PHP_INI_SYSTEM
xmlrpc_error_number “0” 作为XML-RPC的faultcode元素的值(available since PHP 4.1) PHP_INI_ALL
docref_root “” (可用自PHP 4.3) PHP_INI_ALL
docref_ext “” (可用自PHP 4.3.2) PHP_INI_ALL
error_prepend_string 空值 指定了一个错误消息之前的字符串,以输出 PHP_INI_ALL
error_append_string 空值 的错误消息后指定一个字符串,以输出 PHP_INI_ALL
error_log中 空值 指定在脚本错误应该被记录的文件的名称。 该文件应该是Web服务器的用户可写的。 如果使用了特殊值系统日志,错误会发送到系统日志,而不是 PHP_INI_ALL

PHP错误和记录功能

功能 描述
debug_backtrace() 生成一个回溯
debug_print_backtrace() 打印回溯
error_get_last() 返回上次发生错误
error_log() 发送错误信息到日志,以一个文件或邮件帐户
error_reporting() 报告哪些错误指定
restore_error_handler() 恢复以前的错误处理程序
restore_exception_handler() 恢复以前的异常处理程序
set_error_handler() 设置一个用户定义的错误处理函数
set_exception_handler() 设置一个用户定义的异常处理函数
trigger_error() 创建用户级别的错误消息
user_error() 的别名trigger_error()

PHP 5个预定义的错误和日志常量

不变 描述
1 E_ERROR 致命的运行时错误。 无法从恢复的错误。 脚本执行停止
2 E_WARNING 运行时警告(non-fatal errors) 。 脚本执行不被中断。
4 E_PARSE 编译时解析错误。 分析应该只由分析器生成的错误
8 E_NOTICE 运行时通知。 脚本发现这可能是一个错误,但通常运行一个脚本时,也可能发生
16 E_CORE_ERROR 在PHP启动致命错误。 这就好比E_ERROR,除了它是由PHP的核心生成
32 E_CORE_WARNING 在PHP启动非致命错误。 这就好比E_WARNING,除了它是由PHP的核心生成
64 E_COMPILE_ERROR 致命编译时错误。 这就好比E_ERROR,除了它是生成通过了Zend脚本引擎
128 E_COMPILE_WARNING 非致命编译时错误。 这就好比E_WARNING,除了它是通过产生由在Zend脚本引擎
256 E_USER_ERROR 致命的用户生成错误。 这就好比E_ERROR,除了它是在PHP代码通过使用PHP函数生成trigger_error()
512 E_USER_WARNING 非致命的用户生成的警告。 这就好比E_WARNING,除了它是在PHP代码通过使用PHP函数生成trigger_error()
1024 E_USER_NOTICE 用户生成通知。 这就好比E_NOTICE,除了它是在PHP代码通过使用PHP函数生成trigger_error()
2048 E_STRICT 启用有PHP建议改变你的代码,这将确保你的代码的最佳的互操作性和向前兼容性(自PHP 5起,但不包括在E_ALL直到PHP 5.4)
4096 E_RECOVERABLE_ERROR 捕获的致命错误。 指示发生了可能危险的错误,但并没有离开引擎处于不稳定的状态。 如果错误不是由用户定义的手柄抓,应用程序终止,因为它是一个E_ERROR (Since PHP 5.2)
8192 E_DEPRECATED 运行时通知。 启用该接收有关的代码,将不会在以后的版本警告(Since PHP 5.3)
16384 E_USER_DEPRECATED 用户生成警告信息。 这就好比E_DEPRECATED,除了它是在PHP代码通过使用PHP函数生成trigger_error()自PHP 5.3)
32767 E_ALL 启用所有PHP错误和警告(except E_STRICT in versions < 5.4)