PHP 错误 函数
PHP 错误简介
错误处理函数用于处理错误处理和日志记录。
错误处理函数允许我们定义自己的错误处理规则,并修改错误的记录方式。
日志函数允许我们将消息直接发送到其他机器、电子邮件或系统日志。
错误报告函数允许我们自定义错误反馈的级别和类型。
安装
PHP 错误函数是 PHP 核心的一部分。无需安装即可使用这些函数。
运行时配置
错误函数的行为受 php.ini 中设置的影响。
错误和日志记录配置选项
名称 | 默认值 | 描述 | 可更改 |
---|---|---|---|
error_reporting | NULL | 设置错误报告级别(可以是整数或命名常量) | 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(PHP 4.3 起可用) | PHP_INI_ALL |
ignore_repeated_errors | "0" | 指定是否记录重复的错误消息。设置为“1”时,它将不会记录来自同一文件同一行的重复错误(PHP 4.3 起可用) | PHP_INI_ALL |
ignore_repeated_source | "0" | 指定是否记录重复的错误消息。设置为“1”时,它将不会记录来自不同文件或源行的重复错误(PHP 4.3 起可用) | PHP_INI_ALL |
report_memleaks | "1" | 如果设置为“1”(默认值),此参数将显示 Zend 内存管理器检测到的内存泄漏报告(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 错误消息(PHP 4.1 起可用) | PHP_INI_SYSTEM |
xmlrpc_error_number | "0" | 用作 XML-RPC faultCode 元素的值(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 | NULL | 指定在错误消息之前输出的字符串 | PHP_INI_ALL |
error_append_string | NULL | 指定在错误消息之后输出的字符串 | PHP_INI_ALL |
error_log | NULL | 指定脚本错误应记录到的文件名。该文件应可由 Web 服务器的用户写入。如果使用特殊值 syslog,错误将发送到系统日志 | PHP_INI_ALL |
PHP 错误和日志记录函数
函数 | 描述 |
---|---|
debug_backtrace() | 生成回溯信息 |
debug_print_backtrace() | 打印回溯信息 |
error_clear_last() | 清除最后发生的错误 |
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 预定义的错误和日志记录常量
值 | 常量 | 描述 |
---|---|---|
1 | E_ERROR | 致命的运行时错误。无法恢复的错误。脚本执行停止 |
2 | E_WARNING | 运行时警告(非致命错误)。脚本执行不停止 |
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 起,但直到 PHP 5.4 才包含在 E_ALL 中) |
4096 | E_RECOVERABLE_ERROR | 可捕获的致命错误。表示发生了可能危险的错误,但并未使引擎处于不稳定状态。如果错误未被用户定义的处理程序捕获,应用程序将像 E_ERROR 一样中止(自 PHP 5.2 起) |
8192 | E_DEPRECATED | 运行时通知。启用此项可接收有关未来版本中将无法工作的代码的警告(自 PHP 5.3 起) |
16384 | E_USER_DEPRECATED | 用户生成的警告消息。这类似于 E_DEPRECATED,但它是在 PHP 代码中通过使用 PHP 函数 trigger_error() 生成的(自 PHP 5.3 起) |
32767 | E_ALL | 启用所有 PHP 错误和警告(不包括 5.4 之前的版本中的 E_STRICT) |