迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > PHP >

在 PHP 中记录错误

作者:迹忆客 最近更新:2023/03/26 浏览次数:

当我们开发任何应用程序(包括 PHP 应用程序)时,记录错误都是必不可少的。 因此,重要的是要知道如何在 PHP 中记录错误,而不是依赖 print_r()var_dump() 来知道什么时候出了问题。

本文将讨论在 PHP 中启用和处理错误日志记录所需的所有函数。

使用 ini_set() 启用 PHP 错误日志

在任何操作之前,打开 php.ini 文件并检查 display_errors 是否设置为 On,如下图所示。

Display 设置为 on

此外,在 php.ini 文件中,您需要检查 error_reporting 条件。 如果您的版本是 PHP 8.1,您可能在 php.ini 文件中会看到 error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT 。 但是,为了安全起见,请添加以下行。

error_reporting = E_ALL & ~E_NOTICE
error_reporting = E_ALL & ~E_NOTICE | E_STRICT
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ER… _ERROR
error_reporting = E_ALL & ~E_NOTICE

为了让大家正确记录错误,需要使用 ini_set() 函数来启用错误记录。 此函数允许我们设置配置选项的值,例如错误日志记录选项。

我们可以使用一个选项和一个值在我们的代码库中配置 PHP 错误日志记录。 下面的代码片段向我们展示了所需的选项和值。

ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");

如果我们需要在我们的 PHP 脚本中记录错误,我们需要将它们包含在该脚本中。 为了维护 DRY 原则,我们应该创建一个包含上述代码的 PHP 文件,并在我们需要的每个 PHP 中都需要它。

require_once('error.php');

使用 error_log() 在 PHP 中记录错误

现在我们已经配置了 PHP 环境以启用 PHP 错误记录,我们可以使用最重要的 error_log() 函数。

有了这个功能,我们减少了使用 print_r()var_dump() 函数进行调试(尤其是在生产环境中),并创建了特殊的错误模板来让我们知道某些地方工作不正常。

为了展示 error_log() 是如何工作的,我们可以使用该函数来告诉我们读取文件输入操作失败。 在代码片段中,我们使用 file_get_contents() 函数读取 PHP 输入,如果 $data 为空(这将在 NOT 条件下设置为真),则读取 No 文件。 错误语句将被记录。

$data = file_get_contents('php://input');

if (!$data) {
    error_log("No file read. Check input conditions or values.");
}

如果 file_get_contents() 函数没有输入,则代码的输出如下所示。

No file read. Check input conditions or values.

如大家所见,error_log() 函数接受一个消息参数。 除了该参数之外,它还需要一个 message_typedestinationadditional_headers 参数。

不同的日志类型定义了我们将解析为 error_log 函数的整数值;

例如,如果要将错误消息发送到 PHP 系统记录器,则使用 0 作为消息类型。

此外,您可以使用消息类型 3 保存到文件目的地,如以下代码片段所示。

error_log("No file read. Check input conditions or values.", 3, "/my-errors.log");

使用 error_reporting() 在浏览器中记录 PHP 错误

除了 ini_set() 函数之外,我们还可以设置报告哪些 PHP 错误。 error_reporting() 函数可以帮助我们做到这一点。

记住我们创建的错误 PHP 文件是每个需要它的 PHP 文件所必需的; 我们可以在那里添加这个函数及其参数。

  1. 关闭 PHP 代码空间内的所有错误报告。
    error_reporting(0);
    
  2. 报告简单的运行错误(致命运行时错误、运行时警告和编译时解析错误)。
    error_reporting(E_ERROR | E_WARNING | E_PARSE);
    
  3. 报告未初始化的变量或捕获变量名称拼写错误(运行时通知)。
    error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
    
  4. 报告除运行时通知之外的所有错误。
    error_reporting(E_ALL & ~E_NOTICE);
    
  5. 报告所有类型的 PHP 错误。
    error_reporting(E_ALL);
    error_reporting(-1);
    ini_set('error_reporting', E_ALL);
    

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 PHP 中获取时间差的分钟数

发布时间:2023/03/29 浏览次数:183 分类:PHP

本文介绍了如何在 PHP 中获取时间差的分钟数,包括 date_diff()函数和数学公式。它包括 date_diff()函数和数学公式。

PHP 中的重定向

发布时间:2023/03/29 浏览次数:136 分类:PHP

本教程演示了如何将用户从页面重定向到 PHP 中的其他页面

PHP 分页

发布时间:2023/03/29 浏览次数:66 分类:PHP

本教程介绍如何在 PHP 中对数据库行进行分页

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便