PHP函数在curl_exec命令处失败

PHP函数在curl_exec命令处失败,php,rest,curl,Php,Rest,Curl,我试图从Evergage中提取信息,但根据我的控制台日志调试,该函数终止于curl\u exec函数(请参见注释)调试到控制台(“成功”)和curl\u error都不返回任何内容。但是,如果我debug_到_控制台(“成功”)就在curl\u exec之前,它会正确返回。当我测试运行该函数时,它会运行大约30秒,然后结束。我原本认为这是一个超时,所以我尝试取消任何时间限制,但它似乎仍然不起作用。任何帮助都将不胜感激。谢谢 function RetrieveData($account, $dat

我试图从Evergage中提取信息,但根据我的控制台日志调试,该函数终止于
curl\u exec
函数(请参见注释)<代码>调试到控制台(“成功”)和
curl\u error
都不返回任何内容。但是,如果我
debug_到_控制台(“成功”)
就在
curl\u exec
之前,它会正确返回。当我测试运行该函数时,它会运行大约30秒,然后结束。我原本认为这是一个超时,所以我尝试取消任何时间限制,但它似乎仍然不起作用。任何帮助都将不胜感激。谢谢

function RetrieveData($account, $dataset, $kind, $apiToken)
{

$port = "";
if ($account === "localtest") {
$port = ":8443";
}

$requestURI = "https://" . $account . ".evergage.com" . $port . "/api/dataset/" . $dataset . "/" . $kind . ".json?_at=" . $apiToken;

debug_to_console("request URL: " . $requestURI); 

$session = curl_init();

curl_setopt($session, CURLOPT_FAILONERROR, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
curl_setopt($session, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($session, CURLOPT_HEADER, true);
curl_setopt($session, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false);


$headers = array(
'Accept: application/json',
'Content-Type: application/json',
);


curl_setopt($session, CURLOPT_HTTPHEADER, $headers);
curl_setopt ($session, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($session, CURLOPT_URL, $requestURI);

// EVERYTHING RUNS FINE UP TO THIS POINT

set_time_limit(0);
$response = curl_exec($session);

debug_to_console("success");
echo 'Curl error: ' . curl_error($session);

$info = curl_getinfo($session);

$responseCode = $info["http_code"];

if ($responseCode >= 300) {
print("Error loading data: " . $responseCode . "<br/>");
print($response);
} else {
$body = substr($response, $info['header_size']);
$decoded_result = json_decode($body, true);
}

curl_close($session);

return $decoded_result;

}
函数RetrieveData($account、$dataset、$kind、$apiToken)
{
$port=”“;
如果($account==“localtest”){
$port=“:8443”;
}
$requestURI=“https://”“$account.”.evergage.com“$port.”/api/dataset/“$dataset.”/“$kind.”.json?_at=“.apitonk;
调试到控制台(“请求URL:.$requestURI”);
$session=curl_init();
curl_setopt($session,CURLOPT_FAILONERROR,false);
curl_setopt($session,CURLOPT_RETURNTRANSFER,true);
curl_setopt($session,CURLOPT_FOLLOWLOCATION,false);
curl_setopt($session,CURLOPT_头,true);
curl_setopt($session,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($session,CURLOPT_SSL_VERIFYPEER,false);
$headers=数组(
'接受:应用程序/json',
'内容类型:application/json',
);
curl_setopt($session,CURLOPT_HTTPHEADER,$headers);
curl_setopt($session,CURLOPT_CUSTOMREQUEST,“GET”);
curl_setopt($session,CURLOPT_URL,$requestURI);
//到目前为止一切正常
设置时间限制(0);
$response=curl_exec($session);
调试到控制台(“成功”);
回显“卷曲错误:”。卷曲错误($session);
$info=curl\u getinfo($session);
$responseCode=$info[“http_代码”];
如果($responseCode>=300){
打印(“加载数据时出错:.$responseCode.”
); 打印(答复); }否则{ $body=substr($response,$info['header_size']); $decoded_result=json_decode($body,true); } 会议结束($会议); 返回$decoded_结果; }

编辑:我应该提到我已经打印了$requestURI,这是正确的。导航到它会产生我需要立即下载的JSON信息。

错误日志怎么说?30秒很可能是套接字超时造成的。你确定,你的服务器可以访问给定的主机吗?@SamDufel嗯,据我所知,什么都没有。我正在使用MAMP测试功能,并使用标准的Chrome开发工具查看控制台。是否有其他方法可以测试这一点,从而为我提供更多信息?(很抱歉我缺乏知识,这是我第一次接触PHP。)@someone你不知道我很确定。我可以手动插入URL,JSON信息开始下载。这难道不能确认我可以访问主机吗?@user3845511-看到了吗