【问题标题】:How to include GET & POST data in PHP error log如何在 PHP 错误日志中包含 GET 和 POST 数据
【发布时间】:2011-08-04 19:22:10
【问题描述】:

有没有办法让PHP 将错误记录到文件或通过电子邮件将错误INCLUDING $_POST[] & $_GET[]$_SERVER[] 数据发送给我?

现在,我收到了 PHP FATALWARNING 错误和 404 NOT_FOUND 错误的日志,但在不知道用户输入和引用者等信息的情况下很难调试一些错误。

谢谢

【问题讨论】:

标签: php


【解决方案1】:
error_log(print_r($_POST, true));
error_log(print_r($_GET, true));

将其放入custom error handler 中,它会为您记录两者('true' 参数使 print_r 返回文本而不是输出文本)。

您可能需要使用 log_errors_max_len 增加错误日志中的最大行长度,因为它默认为 1024 个字符,并且会截断之后的所有内容(它不会将 >1024 个字符数据拆分为多行)。

【讨论】:

  • 使用这个答案从 phpunit 获得了 $response 500 输出,它运行良好,运行测试时在终端打印错误。谢谢。
【解决方案2】:

如果您使用的是 PHP 5,请创建一个自定义异常类,该类将 extend the native PHP Exception class 并添加您喜欢的任何数据收集/记录方法。这样您就可以轻松地将try {} catch() {} 块与异常结合起来,并以您自己的方式控制您希望如何记录所有数据。

【讨论】:

    【解决方案3】:

    我会推荐 error_log() 函数。我经常使用它来调试 php 中的东西。 http://php.net/manual/en/function.error-log.php

    【讨论】:

      【解决方案4】:

      我在一个电信项目中工作,该项目使用 CI 来处理基于 Felx 的前端,我们劫持了所有可能的错误报告,并在 syslog 函数上编写了一个包装器,并在我们的应用程序中使用它,结果是我们可以记录我们想要的任何数据,并且日志通过系统日志查看器可见:-)

      【讨论】:

      • 提示:PHP 可以直接登录到 syslog。这是一个ini设置。
      • 提示:我提到我们在 syslog 函数上编写了一个包装器,有人会编写一个包装器而不使用 ini 文件肯定是有原因的。在您使用您的权力否决答案之前,请务必注意所提到的内容。什么都不感谢。 :-)
      • 那么对于投反对票的人,请评论为什么你会投反对票或评论,这真的有助于对方从错误中吸取教训,再​​次感谢没有任何解释的投反对票。跨度>
      猜你喜欢
      • 2016-05-23
      • 2018-09-12
      • 1970-01-01
      • 2010-12-04
      • 2012-03-11
      • 2022-01-19
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      相关资源
      最近更新 更多