Error
PHP Error 简介
Error 和 Logging 函数允许您对错误进行处理和记录。
Error 函数允许用户定义错误处理规则,并修改记录错误的方式。
Logging 函数允许用户对应用程序进行日志记录,并把日志消息发送到电子邮件、系统日志或其他的机器。
error 函数用于完成错误处理和日志记录。
error 函数允许我们定义自己的错误处理规则,并修改错误记录方式。
logging 函数允许我们将消息直接发送到其他机器、电邮或系统日志。
error reporting 函数允许我们错误的类型和层级。
安装
PHP error 函数是 PHP 核心的一部分。无需安装即可使用这些函数。
Runtime 配置
error 函数的行为受到 php.ini 中设置的影响。
Errors 和 logging 配置选项如下:
| 名称 | 默认值 | 描述 | 可修改范围 |
|---|---|---|---|
| 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 之中。 注释:这是与服务器相关的特定配置项。 注释:在生产系统中,强烈建议你使用错误日志记录web站点上显示的错误信息。 |
PHP_INI_ALL |
| log_errors_max_len | "1024" |
设置 log_errors 的最大字节数。在 error_log 会添加有关错误源的信息。 默认值为 1024,如果设置为 0 表示不限长度。 该长度设置对记录的错误,显示的错误,以及 $php_errormsg 都会有限制作用。 |
PHP_INI_ALL |
| ignore_repeated_errors | "0" |
规定是否记录重复的错误信息。 重复的错误必须出现在同一个文件中的同一行代码上,除非 ignore_repeated_source 设置为 true。 |
PHP_INI_ALL |
| ignore_repeated_source | "0" |
规定是否记录重复的错误信息。忽略重复消息时,也忽略消息的来源。 当该设置开启时,重复信息将不会记录它是由不同的文件还是不同的源代码行产生的。 |
PHP_INI_ALL |
| report_memleaks | "1" | 如果该参数被设置为 On(默认),则会显示由 Zend 内存管理器侦测到的内存泄露报告。 | PHP_INI_ALL |
| track_errors | "0" | 如果开启,最后一个错误将永远存在于变量 $php_errormsg 中。 | PHP_INI_ALL |
| html_errors | "1" | 在错误信息中关闭 HTML 标签。 |
|
| xmlrpc_errors | "0" | 如果启用,则关闭正常的错误报告,并将错误的格式设置为 XML-RPC 错误信息的格式。 | PHP_INI_SYSTEM |
| xmlrpc_error_number | "0" | 用作 XML-RPC faultCode 元素的值。 | PHP_INI_ALL |
| docref_root | "" | (available since PHP 4.3) | PHP_INI_ALL |
| docref_ext | "" | (available since 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 Error 和 Logging 函数
| 函数 | 描述 |
|---|---|
| debug_backtrace() | 生成 backtrace。 |
| debug_print_backtrace() | 打印 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 | 运行时非致命的错误。不终止执行脚本。 |
| 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函数 trigger_error()来产生的。 |
| 512 | E_USER_WARNING | 用户产生的警告信息。类似 E_WARNING, 但是是由用户自己在代码中使用 PHP 函数 trigger_error() 来产生的。 |
| 1024 | E_USER_NOTICE | 用户产生的通知信息。类似 E_NOTICE, 但是是由用户自己在代码中使用 PHP 函数 trigger_error() 来产生的。 |
| 2048 | E_STRICT | 启用 PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。 |
| 4096 | E_RECOVERABLE_ERROR | 可被捕捉的致命错误。它表示发生了一个可能非常危险的错误,但是还没有导致 PHP 引擎处于不稳定的状态。 如果该错误没有被用户自定义句柄捕获 (参见 set_error_handler()),将成为一个 E_ERROR 从而脚本会终止运行。 |
| 8192 | E_DEPRECATED | 运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。 |
| 16384 | E_USER_DEPRECATED | 用户产生的警告信息。类似 E_DEPRECATED, 但是是由用户自己在代码中使用 PHP 函数 trigger_error() 来产生的。 |
| 32767 | E_ALL | E_STRICT 除非的所有错误和警告信息。 |