PHP 错误 功能
PHP错误介绍
错误函数用于处理错误处理和日志记录。
错误函数允许我们定义自己的错误处理规则,并修改记录错误的方式。
日志功能允许我们将消息直接发送到其他机器、电子邮件或系统日志。
错误报告功能允许我们自定义错误反馈的级别和类型。
安装
PHP 错误函数是 PHP 核心的一部分。无需安装即可使用这些函数。
运行时配置
错误函数的行为受 php.ini 中的设置影响。
错误和日志配置选项:
姓名 | 默认 | 描述 | 多变 |
---|---|---|---|
错误报告 | 无效的 | 设置错误报告级别(整数或命名常量) | PHP_INI_ALL |
显示错误 | "1" | 指定是否应将错误打印到屏幕上,或者是否应向用户隐藏错误。 笔记: 此功能不应在生产系统上使用(仅用于支持您的开发) |
PHP_INI_ALL |
显示启动错误 | "0" | 即使启用了 display_errors,也不会显示 PHP 启动过程中发生的错误 笔记: 强烈建议保持 display_startup_errors 关闭,除非调试 |
PHP_INI_ALL |
日志错误 | "0" | 定义是否应将脚本错误消息记录到服务器的错误日志或 error_log 中。 笔记: 强烈建议在生产网站上使用错误日志而不是错误显示 |
PHP_INI_ALL |
log_errors_max_len | "1024" | 设置 log_errors 的最大长度(以字节为单位)。可以使用值“0”表示完全不应用任何最大长度。此长度适用于记录的错误、显示的错误以及 $php_errormsg(自 PHP 4.3 起可用) | PHP_INI_ALL |
忽略重复错误 | "0" | 指定是否记录重复的错误消息。设置为“1”时,不会记录同一行中同一文件中的重复错误(自 PHP 4.3 起可用) | PHP_INI_ALL |
忽略重复源 | "0" | 指定是否记录重复的错误消息。设置为“1”时,不会记录来自不同文件或源代码行的重复错误(自 PHP 4.3 起可用) | PHP_INI_ALL |
report_memleaks | "1" | 如果设置为“1”(默认值),此参数将显示 Zend 内存管理器检测到的内存泄漏报告(自 PHP 4.3 起可用) | PHP_INI_ALL |
跟踪错误 | "0" | 如果设置为“1”,最后一个错误消息将始终存在于变量 $php_errormsg 中 | PHP_INI_ALL |
html_错误 | "1" | 关闭错误消息中的 HTML 标签 | PHP_INI_ALL PHP <= 4.2.3 中的 PHP_INI_SYSTEM。 |
xmlrpc_错误 | "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 |
错误前置字符串 | 无效的 | 规定在错误消息之前输出的字符串 | PHP_INI_ALL |
错误附加字符串 | 无效的 | 规定错误消息后输出的字符串 | PHP_INI_ALL |
错误日志 | 无效的 | 指定应记录脚本错误的文件的名称。该文件应可由 Web 服务器的用户写入。如果使用特殊值 syslog,则错误将发送到系统记录器 | PHP_INI_ALL |
PHP 错误和日志记录函数
功能 | 描述 |
---|---|
调试回溯() | 生成回溯 |
调试打印回溯() | 打印回溯 |
错误清除() | 清除最后一个错误 |
错误获取最后结果() | 返回发生的最后一个错误 |
错误日志() | 向日志、文件或邮件帐户发送错误消息 |
错误报告() | 指定报告哪些错误 |
恢复错误处理程序() | 恢复先前的错误处理程序 |
恢复异常处理程序() | 恢复先前的异常处理程序 |
设置错误处理程序() | 设置用户定义的错误处理函数 |
设置异常处理程序() | 设置用户定义的异常处理函数 |
触发错误() | 创建用户级错误消息 |
用户错误() | 别名 触发错误() |
PHP 预定义错误和日志常量
价值 | 持续的 | 描述 |
---|---|---|
1 | 错误信息 | 致命的运行时错误。无法恢复的错误。脚本的执行被暂停 |
2 | 电子警告 | 运行时警告(非致命错误)。脚本的执行不会停止 |
4 | 解析 | 编译时解析错误。解析错误只能由解析器生成 |
8 | 电子通知 | 运行时通知。脚本发现了一些可能是错误的东西,但也可能发生在正常运行脚本时 |
16 | 核心错误 | PHP 启动时发生致命错误。这类似于 E_ERROR,但它是由 PHP 核心生成的 |
32 | 核心警告 | PHP 启动时的非致命错误。这类似于 E_WARNING,但它是由 PHP 核心生成的 |
64 | 编译错误 | 致命的编译时错误。这类似于 E_ERROR,但它是由 Zend 脚本引擎生成的 |
128 | 编译警告 | 非致命编译时错误。这类似于 E_WARNING,但它是由 Zend 脚本引擎生成的 |
256 | 用户错误 | 用户生成的致命错误。这类似于 E_ERROR,但它是在 PHP 代码中使用 PHP 函数 trigger_error() 生成的 |
512 | 用户警告 | 非致命的用户生成警告。这类似于 E_WARNING,但它是在 PHP 代码中使用 PHP 函数 trigger_error() 生成的 |
1024 | 用户通知 | 用户生成的通知。这类似于 E_NOTICE,但它是使用 PHP 函数 trigger_error() 在 PHP 代码中生成的 |
2048 | 严格 | 允许 PHP 建议对您的代码进行更改,以确保代码具有最佳的互操作性和向前兼容性(自 PHP 5 开始,但直到 PHP 5.4 才包含在 E_ALL 中) |
4096 | 可恢复错误 | 可捕获的致命错误。表示发生了可能危险的错误,但并未使引擎处于不稳定状态。如果用户定义的句柄未捕获该错误,则应用程序将中止,因为它是 E_ERROR(自 PHP 5.2 起) |
8192 | 已弃用 | 运行时通知。启用此选项可接收有关未来版本中无法运行的代码的警告(自 PHP 5.3 起) |
16384 | 已弃用 | 用户生成的警告消息。这类似于 E_DEPRECATED,但它是使用 PHP 函数 trigger_error() 在 PHP 代码中生成的(自 PHP 5.3 起) |
32767 | 全部 | 启用所有 PHP 错误和警告(版本 <5.4 中的 E_STRICT 除外) |