【问题标题】:php curl_exec returns emptyphp curl_exec 返回空
【发布时间】:2014-11-25 07:53:43
【问题描述】:
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_PROXY, $proxy); // $proxy is ip of proxy server
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
 curl_setopt($ch, CURLOPT_TIMEOUT, 10);
 $httpCode = curl_getinfo($ch , CURLINFO_HTTP_CODE); // this results 0 every time
 echo '<br> curl'.$ch; //this line outputs resource id#5
 $exec = stripslashes(curl_exec($ch)); 
 echo '<br> exec'.curl_exec($ch); //this results blank

我很困惑为什么 $exec 不返回任何东西,我是 curl 的新手,请帮助,在此先感谢

【问题讨论】:

    标签: php curl


    【解决方案1】:

    curl_exec 将在请求失败时返回false。调整你的功能:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PROXY, $proxy); // $proxy is ip of proxy server
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    
    $httpCode = curl_getinfo($ch , CURLINFO_HTTP_CODE); // this results 0 every time
    $response = curl_exec($ch);
    
    if ($response === false) 
        $response = curl_error($ch);
    
    echo stripslashes($response);
    
    curl_close($ch);
    

    这样你会看到 curl 错误

    【讨论】:

    • s/stripslaches/stripslashes/
    • 感谢,搜索后发现错误是“could,nt connect to host”,发现错误是由于代理服务器造成的
    • 您也可以添加curl_errno($ch)获取错误编号(如果没有发生错误,则添加0)。
    • 恕我直言:提问的用户说,返回结果是空的,不是假的,这是一个很大的不同。空并不意味着发生了错误。 (我有同样的问题。)
    • @Jasie echo false; 实际上会显示一个空白屏幕,在 OP 的情况下就是这种情况
    【解决方案2】:

    试试:

    curl_setopt($ch, CURLOPT_TIMEOUT, 50);
    

    也许响应超过 10 个。

    我有同样的问题,我是这样解决的。

    【讨论】:

      【解决方案3】:

      您在实际进行 HTTP 调用之前尝试访问 HTTP 响应代码。逆向执行如下:

      $response = curl_exec($ch);
      $httpCode = curl_getinfo($ch , CURLINFO_HTTP_CODE); // this results 0 every time
      

      【讨论】:

        【解决方案4】:

        结果返回 0 表示您无法连接到服务器,请重新检查您的代理并增加超时时间:)

        【讨论】:

        • "你无法连接到服务器,所以请重新检查你的代理"thanx 它工作了
        猜你喜欢
        • 1970-01-01
        • 2013-05-03
        • 1970-01-01
        • 1970-01-01
        • 2013-10-22
        • 2016-11-23
        • 2012-01-03
        • 1970-01-01
        • 2021-09-30
        相关资源
        最近更新 更多