PHP CURL永远不会结束请求

时间:2017-03-21 11:39:26

标签: php curl

我最近将我的项目从localhost上传到了一个实时托管服务器。在我的项目中,我使用了一个CURL请求,直到现在才能在localhost上完全正常工作。

只要我在实时服务器(Arizonawebservices.com)上移动它,该CURL请求就会停止工作。当我的页面发送CURL请求时,它会继续处理并且永远不会返回任何输出。

我检查了服务器的CURL支持(在PHP的exec()函数中使用“which curl”命令),是的,它启用了CURL支持。

还创建了一个测试页面,用于手动拍摄CURL请求并检查它是否正常工作。尝试www.google.com,www.yahoo.com和许多其他网址,一切正常,但当我将原始API网址“https://dataviz.sandbox.rcoanalytics.com:10105/oauth/token”放入其中时。它开始表现得像以前一样。我完全无法从CURL请求中得到任何响应。任何帮助将不胜感激。

使用以下代码进行测试:

function httpPost($url,$params)
{

   $postData = '';

   if (!empty($params)) {
    //create name value pairs seperated by &
    foreach($params as $k => $v) 
    { 
       $postData .= $k . '='.$v.'&'; 
    }
    $postData = rtrim($postData, '&');
    }

    $ch = curl_init();  

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, false); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

    if ($postData != "") {
    curl_setopt($ch, CURLOPT_POST, count($postData));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
    }

    $output=curl_exec($ch);

    if($output === false)
    {
        echo "Error Number:".curl_errno($ch)."<br>";
        echo "Error String:".curl_error($ch);
    }

    curl_close($ch);
    return $output;

}

$params = array(

);

echo httpPost("https://dataviz.sandbox.rcoanalytics.com:10105/oauth/token", $params);

1 个答案:

答案 0 :(得分:2)

网址有SSL错误,因此在cURL请求中,当cURL尝试验证主机时,它阻止您访问该地址。

enter image description here

使用以下内容:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

这显然是不安全的方法来访问网址,但对于像这样的主机,它可以解决问题。

相关问题