首页博客网络编程
您已经了解了 PHP 错误处理的工作原理、PHP 错误的本质是什么,以及如何处理它们。不过,还有很多你不知道的功能。其中一些(如PHP显示错误)可能经常派上用场。
PHP错误处理不是你想长期搁置的任务。因此,在本教程中,我们将向您介绍各种函数和常量,这些函数和常量将在您使用 PHP 错误处理程序和创建自定义错误日志时对您有所帮助。
PHP 错误函数用于处理错误处理和日志记录任务。
错误函数允许您定义如何处理和记录 PHP 错误。
记录错误意味着发送他们的消息以保存在指定的文件、电子邮件和其他类型的系统日志中。
错误报告功能允许您自定义对某些 PHP 错误的反应方式以及反馈级别。
这些函数内置在 PHP 核心中。
本教程详细解释了什么是PHP错误。
这些函数的行为方式受 php.ini 中的设置的影响:
名字 | 违约 | 描述 | 多变 |
---|---|---|---|
error_reporting | 零 | 设置 PHP 错误报告级别(整数或命名常量) | PHP_INI_ALL |
display_errors | "1" | 指定是将错误打印到屏幕上,还是对用户隐藏错误。 注意:切勿在生产系统上使用此设置(仅用于支持您的开发) | PHP_INI_ALL |
display_startup_errors | "0" | 即使 PHP 显示错误处于打开状态,在 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 PHP_INI_SYSTEM <= 4.2.3。 |
xmlrpc_errors | "0" | 关闭正常的PHP错误报告,并开始将错误格式化为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 | 零 | 指定要在错误消息之前输出的字符串 | PHP_INI_ALL |
error_append_string | 零 | 指定错误消息后输出的字符串 | PHP_INI_ALL |
error_log | 零 | 指定要记录脚本错误的文件的名称。文件应设置为可由 Web 服务器的用户写入。如果使用特殊值 syslog,则会将错误发送到系统记录器 | PHP_INI_ALL |
对于PHP错误管理,欢迎您使用以下功能。下表列出了可用于获取最新错误信息、设置不同处理程序函数和执行其他相关操作的最常见方法:
功能 | 描述 |
---|---|
debug_backtrace() | 生成回溯 |
debug_print_backtrace() | 打印回溯 |
error_get_last() | 返回上次发生的错误 |
error_log() | 将错误消息发送到日志、文件或邮件帐户 |
error_reporting() | 指定报告的错误 |
restore_error_handler() | 恢复以前的 PHP 错误处理程序 |
restore_exception_handler() | 还原以前的异常处理程序 |
set_error_handler() | 设置用户定义的PHP错误处理函数 |
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 | 致命错误。在编译时生成,与 Zend 脚本引擎生成的E_ERROR非常相似。 |
128 | E_COMPILE_WARNING | 非致命错误,在编译时生成,与 Zend 脚本引擎生成的错误非常相似E_WARNING。 |
256 | E_USER_ERROR | 致命错误,用户生成的错误,很像E_ERROR只是它们是由代码作者使用 trigger_error() 函数设置的。 |
512 | E_USER_WARNING | 非致命的用户生成的警告,很像E_WARNING只是它们是由代码作者使用 trigger_error() 函数设置的。 |
1024 | E_USER_NOTICE | 请注意,用户生成,很像E_NOTICE只是它们是由代码作者使用 trigger_error() 函数设置的。 |
2048 | E_STRICT | 让 PHP 为您的代码提出更改建议,以确保您的代码具有最佳的互操作性和向前兼容性(从 PHP 5 开始,但仅在 PHP 5.4 中包含在 E_ALL 中) |
4096 | E_RECOVERABLE_ERROR | 致命错误,可以被捕获,很像 E_ERROR ,但它可以使用用户定义的 PHP 错误处理程序捕获,该处理程序可以使用 set_error_handler() 进行设置。 |
8192 | E_DEPRECATED | 所有现有的错误、警告和通知(E_STRICT成为 PHP 5.4 版中 E_ALL 的一部分) |
16384 | E_USER_DEPRECATED | 警告消息,由用户生成,与E_DEPRECATED非常相似,只是它是使用 PHP 函数 trigger_error() 在 PHP 代码中生成的(从 PHP 5.3 开始) |
32767 | E_ALL | 启用所有可用的 PHP 错误和警告(5.4 之前版本中的 E_STRICT 除外) |
要处理和记录错误,您应该使用特殊的 PHP 错误函数。
记录错误时,将发送其消息并将其保存在日志中,例如指定的文件或电子邮件。
使用 PHP 错误报告,您可以定义系统对特定 PHP 错误的反馈及其级别。
这些功能不需要特殊安装。
声明提示:若要转载请务必保留原文链接,申明来源,谢谢合作!
广告位
广告位