【问题标题】:PHP cURL request fails on https call with errno 56: "Received HTTP code 403 from proxy after CONNECT"PHP cURL 请求在 https 调用中失败,错误码为 56:“CONNECT 后从代理接收到 HTTP 代码 403”
【发布时间】:2021-02-11 07:17:48
【问题描述】:

服务器:Centos 8(完全更新) PHP 版本:7.4 (FPM)

我正在尝试使用 cURL 进行调用(也尝试使用 Guzzle),但我仅使用 HTTPS URL 时遇到了同样的问题。 HTTP url 很好,没有问题。

这里是一些示例代码:

curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_VERIFYPEER => false,
    CURLOPT_CAINFO => BASEPATH . "/data/cacert.pem",
    CURLOPT_URL => $url
));

确切的 cURL 错误是:Received HTTP code 403 from proxy after CONNECT

Apache 虚拟主机未使用任何代理。我认为这在 Apache 和 PHP-FPM 之间以某种方式停止了。输出的日志没有帮助。我已经排除了 SELinux 和 mod_security 是问题所在。两者都禁用了,仍然得到相同的结果。

另一个问题提到将以下内容添加到https_proxy.conf

ProxyRequests On
AllowCONNECT 443 563 5000

但这并没有产生任何结果。原因是我没有在任何 http 配置中使用 http 代理。

【问题讨论】:

  • 你评论了吗similar questions?
  • 是的,这不适用于我的情况。
  • 为什么不呢?我们不知道,请更新您的问题。

标签: php curl


【解决方案1】:

嗯,我发现了问题所在。我的.env 文件中有一个未使用的环境变量,它设置了我通常在我的开发机器上使用的代理。该脚本在生产机器上失败。

原来 cURL 和 Guzzle 会自动将这些环境变量与它们的请求一起加载,从而导致代理连接被拒绝。我删除了变量,一切都按预期工作。

生活和学习。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-21
    • 2017-06-25
    • 2017-08-04
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    相关资源
    最近更新 更多