【问题标题】:Log all cURL requests from an PHP application with third-party libraries使用第三方库记录来自 PHP 应用程序的所有 cURL 请求
【发布时间】:2018-07-17 07:08:29
【问题描述】:

好的,我在 PHP Yii2 应用程序中遇到了困难。我需要记录来自我的应用程序的每个传入和传出请求。传入的请求可以很容易地登录到 PHP 本身(在引导阶段添加一些处理程序),这很容易。

但真正的问题是我正在使用许多第三方库(即亚马逊 MWS SDK、Ebay SDK、一些 Guzzle 请求等)并且我想记录所有带有错误响应的传出请求(出于调试/分析原因) .

是否可以更改 curl 中的某些设置以记录这些请求?我的意思是 curl 是否支持 php.ini [curl] 中的一些设置来记录东西。或者如果没有,是否有 php_curl.dll 的来源,您可以进行一些更改以编写日志并编译它。或者至少添加一些应用程序中所有 curl 请求的处理程序,无需更改/复制第三方 SDK。

我已经搜索过这个问题,找到了像tcpdump或wireshark这样的解决方案来嗅探一些数据包,但是curl方面真的没有解决方案来实现日志记录吗?

感谢您的关注

【问题讨论】:

标签: php curl dll yii2


【解决方案1】:

不,你不能在 .ini 中设置它

但是如果你可以编辑你的 php curl-run 代码,你可以使用两个两个选项 CURLOPT_VERBOSE 和 CURLOPT_STDERR

http://php.net/manual/en/function.curl-setopt.php

CURLOPT_VERBOSE - 打开显示详细信息。 CURLOPT_STDERR - 日志的输出句柄

所以你的代码会是这样的

$LogFileHandle = fopen($PathToLog."/cur.log", "a+");
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR, $LogFileHandle);

Where $ch - curl_init 返回的 cURL 句柄。并且 $PathToLog - 带有日志的目录路径,例如 "/var/log"

【讨论】:

  • 是的,我明白了,但是在我的代码中我提出了很多请求(来自不同的地方),包括 sdk(位于 vendor),所以我无法更改它们的源代码..跨度>
猜你喜欢
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 2018-04-23
  • 1970-01-01
  • 2020-02-10
相关资源
最近更新 更多