【问题标题】:PHP CURL Error - curl: (56) Recv failure: Connection reset by peerPHP CURL 错误 - curl: (56) Recv failure: Connection reset by peer
【发布时间】:2012-07-15 02:18:48
【问题描述】:

基本上,这个错误只发生在CURL中

curl: (56) Recv failure: Connection reset by peer

但是当我直接在浏览器上直接访问链接时,它可以工作!

您对修复此问题或导致此错误的原因有何建议?

注意:服务器是用 ASP 编码的,它只发生在一次 API 调用中

【问题讨论】:

  • 是的,在控制台上,这也是错误,curl 请求上没有标头/选项。而且也没有cookie涉及..
  • 我猜这是一个服务器错误,但我不知道这发生在服务器的哪个部分或部分
  • 您的网络服务器日志中是否有任何错误?服务器是否在执行 curl commando 的同一台机器上运行?如果是这样,请尝试添加被调用域以映射到主机文件中的 localhost...
  • 我通过 POST 而不是 GET 请求解决了这个问题

标签: php curl


【解决方案1】:

我通过从 URL 中删除 空白字符 解决了这个问题。在我的情况下,出错的是代理服务器,而不是 Web 服务器。

在 PHP 中:

     curl_setopt($ch, CURLOPT_URL, trim($url));

【讨论】:

  • 如果空白字符是 URL 的有效部分,您可以改用 rawurlencode() 函数,将空白字符替换为 %20
【解决方案2】:

我记得很久以前就遇到过同样的问题。虽然我不记得究竟是什么解决了这个问题,但我记得尝试过以下方法:

  1. 我试图直接在 URL 中传递查询参数,我尝试通过 POST 方法传递

  2. 我尝试使用带有 curl 的代理来查看我是否可能被其他服务器阻止

  3. 我相信我也要求我的主机进行调查,他们对 Apache 设置进行了一些更改

【讨论】:

  • 你还记得结果是什么吗?
  • 我认为主机确实更改了一些 Apache 设置,但不确定它们是什么设置。更改设置后,它立即开始工作。我在 curl 请求中发送参数的方式也可能存在问题。
  • 我也在这里,litespeed anti ddos​​ 措施可能会对呼叫 IP 设置临时禁令。我相信这就是发生在我身上的事情。我们仍在讨论中。
【解决方案3】:

这段代码我也有类似的问题:

        $url = "http://xxx.xxx.xxx.xxx";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_PORT, 44455); //Set the port to connect to
        //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 44455); 
        curl_setopt($ch, CURLOPT_URL, $url);
        echo $xml = curl_exec($ch);
        if(curl_errno($ch))
        {
            echo 'error:' . curl_error($ch);
        }
        curl_close($ch);

通过禁用它解决了这个问题:

        //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 44455);

【讨论】:

    猜你喜欢
    • 2019-06-11
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 2020-06-06
    • 2021-09-06
    • 2023-01-20
    • 2019-09-06
    • 1970-01-01
    相关资源
    最近更新 更多