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) |