首页博客网络编程
如何修复PHP错误:处理程序,函数和常量指南
摘要 要处理和记录错误,您应该使用特殊的 PHP 错误函数。 记录错误时,将发送其消息并将其保存在日志中,例如指定的文件或电子邮件。 使用 PHP 错误报告,您可以定义系统对特定 PHP 错误的反馈及其级别。 这些功能不需要特殊安装。

您已经了解了 PHP 错误处理的工作原理、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 错误处理中,您可以使用预定义的常量,这些常量旨在允许您设置应该显示哪些错误。请查看下表,了解每个常量的含义:

价值不断描述
1E_ERROR无法从中恢复的致命运行时错误将停止脚本执行。
2E_WARNING轻微的、非致命的错误,在运行脚本时发生,并且不会停止它。
4E_PARSE编译时错误,由分析器生成。
8E_NOTICE这包括运行时通知,其中可能包括小错误以及正常运行脚本时可能收到的通知。
16E_CORE_ERROR致命错误 PHP启动错误,与E_ERROR非常相似,仅由PHP核心生成。
32E_CORE_WARNING非致命的PHP启动错误,与E_WARNING非常相似,仅由PHP核心生成。
64E_COMPILE_ERROR致命错误。在编译时生成,与 Zend 脚本引擎生成的E_ERROR非常相似。
128E_COMPILE_WARNING非致命错误,在编译时生成,与 Zend 脚本引擎生成的错误非常相似E_WARNING。
256E_USER_ERROR致命错误,用户生成的错误,很像E_ERROR只是它们是由代码作者使用 trigger_error() 函数设置的。
512E_USER_WARNING非致命的用户生成的警告,很像E_WARNING只是它们是由代码作者使用 trigger_error() 函数设置的。
1024E_USER_NOTICE请注意,用户生成,很像E_NOTICE只是它们是由代码作者使用 trigger_error() 函数设置的。
2048E_STRICT让 PHP 为您的代码提出更改建议,以确保您的代码具有最佳的互操作性和向前兼容性(从 PHP 5 开始,但仅在 PHP 5.4 中包含在 E_ALL 中)
4096E_RECOVERABLE_ERROR致命错误,可以被捕获,很像 E_ERROR ,但它可以使用用户定义的 PHP 错误处理程序捕获,该处理程序可以使用 set_error_handler() 进行设置。
8192E_DEPRECATED所有现有的错误、警告和通知(E_STRICT成为 PHP 5.4 版中 E_ALL 的一部分)
16384E_USER_DEPRECATED警告消息,由用户生成,与E_DEPRECATED非常相似,只是它是使用 PHP 函数 trigger_error() 在 PHP 代码中生成的(从 PHP 5.3 开始)
32767E_ALL启用所有可用的 PHP 错误和警告(5.4 之前版本中的 E_STRICT 除外)

PHP错误:总结

  • 要处理和记录错误,您应该使用特殊的 PHP 错误函数。

  • 记录错误时,将发送其消息并将其保存在日志中,例如指定的文件或电子邮件。

  • 使用 PHP 错误报告,您可以定义系统对特定 PHP 错误的反馈及其级别。

  • 这些功能不需要特殊安装。


声明提示:若要转载请务必保留原文链接,申明来源,谢谢合作!

本文链接:https://www.gaoxuejun173.top/blog/227

广告位

本文配乐
来说两句吧

该文章已禁止评论

最新评论

广告位