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 <= 4.2.3 中为 `PHP_INI_SYSTEM`。 |
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 外)。 |