我在朋友服务器上有一个简单的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和我自己的服务器内部工作。网址按预期返回。但是,在我的朋友服务器上调用此函数时,它只是没有给出任何响应。
任何可能导致此问题的想法?
答案 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 /防火墙可能存在问题。也可能需要使用代理服务器。