CURL无法连接?只是挂起而没有回应。 PHP已启用它

时间:2010-09-26 14:10:22

标签: php api curl

我在朋友服务器上有一个简单的PHP函数,我已经检查并启用了PHP CURL。

功能是:

function sw_fetch_code($apikey='',$email=''){

 $url = "http://www.domain.com/xxx/api.php?getcode=1&apikey=".$apikey."&email=".$email."";


        $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_HEADER, 1); 
 $result = curl_exec($ch);

 curl_close($ch);

 $obj = json_decode($result);  

 if(!empty($obj)){
  if($obj->status == 200){

   return $obj->code;

  }else{
   return $obj->status;
  }
 }

}

正如您所看到的,这非常简单,我已经对它进行了测试,并且可以在localhost和我自己的服务器内部工作。网址按预期返回。但是,在我的朋友服务器上调用此函数时,它只是没有给出任何响应。

任何可能导致此问题的想法?

3 个答案:

答案 0 :(得分:0)

第一: 从“朋友”服务器检查URL是否有效,因为您没有POST参数,您可以检查确切的查询并获得预期的结果。看看你是否可以在朋友服务器上的浏览器上获得结果。如果您没有GUI,请在命令行上尝试wget。看看你是否得到了结果。如果你继续下一步,如果你没有cURL不是问题。 “朋友服务器”无法看到您的域名。可能是网络问题/主机等..(如果是这样的话就更多了)

第二: 如果您在步骤1中看到结果,请尝试此操作,看看是否有任何结果:

$handle = fopen($url, "rb");
    $contents = '';
while (!feof($handle)) {
    $contents .= fread($handle,1024);
}

如果你对此做出回应,那么cURL就有问题了。

答案 1 :(得分:0)

curl_exec()呼叫是否立即失败,或者它是否会在超时之前挂起30秒左右?如果是后者,您可能需要检查防火墙问题。

curl_getinfo($ch)告诉你什么?

答案 2 :(得分:-1)

我认为你应该从标准检查开始:

如果使用php_curl扩展编译php(或者扩展名可用作共享对象)。您可以通过

进行检查
<?php
if (!extension_loaded('curl')) 
{
    if (!dl('curl.so')) {
        die('Cannot load php_curl extension');
    }
}
?>

如果加载了扩展程序,则朋友服务器上的dns /防火墙可能存在问题。也可能需要使用代理服务器。