【问题标题】:Curl stopped working without changes to Apache or PHPCurl 在不更改 Apache 或 PHP 的情况下停止工作
【发布时间】:2013-11-01 23:48:18
【问题描述】:

似乎陷入了困境。据我所知,PHP 或 Apache 没有任何变化,但是已经运行了将近 6 个月的代码今天下午 2 点停止运行。

代码是:

function ls_record($prospectid,$campid){
            $api_post = "method=NewProspect&prospect_id=".$prospectid."&campaign_id=".$campid;

            $ch = curl_init();

            curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
            curl_setopt($ch, CURLOPT_HEADER, FALSE);
            curl_setopt($ch, CURLOPT_POST, TRUE);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $api_post);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            curl_setopt($ch, CURLOPT_URL, "http://XXXXX/XXXXXX/store.php");
            $x = print_r(curl_exec($ch), TRUE);
            return $x;
    }

它返回NULL, I tried usingfile_get_contents()which also returnsNULL`。我检查了 Apache 错误日志,但什么也没看到……我需要一些帮助。

【问题讨论】:

    标签: php apache curl


    【解决方案1】:

    您可以访问服务器的命令行吗?可能是目的地以某种方式阻止了您。

    如果你有命令行访问权限,试试这个

    wget http://XXXXX/XXXXXX/store.php
    

    至少应该返回一些东西(如果不是标题)

    【讨论】:

    • 在这种情况下,它正在卷曲的文件实际上是在其自身上。如果我从浏览器访问 URL,预期的功能会按预期工作。
    【解决方案2】:

    使用curl_getinfo 检查您的 curl 执行状态,可能您尝试从中提取内容的服务器需要您的 curl 设置用户代理,某些站点检查用户代理以阻止不需要的 curl 访问。

    以下是我用来将 curl 伪装成桌面 chrome 浏览器的用户代理。

    curl_setopt($ch,CURLOPT_USERAGENT,' Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36');
    

    【讨论】:

      【解决方案3】:

      由于网速低,我在服务器上遇到了同样的问题。互联网速度下降了一段时间并且 curl 需要很长时间才能执行,因此它返回超时错误。几分钟后它工作正常,服务器上没有任何变化。

      【讨论】:

        猜你喜欢
        • 2015-09-24
        • 1970-01-01
        • 2012-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-30
        • 1970-01-01
        • 2019-11-14
        相关资源
        最近更新 更多