cURL不能在空闲主机上连接,但在我的本地主机上可以正常工作


cURL can't connect in a free host but works fine in my localhost

我创建了一个小的web应用程序,通过与OAuth连接,可以使用Twitter帐户登录。这招有几个月很管用,但现在不起作用了。这是一个快速总结的"用twitter登录"算法的概述。

  • 收集一些参数(时间戳,nonce,某种应用程序ID等)
  • 使用这些参数创建一个新的URL,看起来像这样:https://api.twitter.com/oauth/request_token?oauth_consumer_key=DLZZTIxpY19FnWJNtqw5A& oauth_nonce = 1369452195, oauth_signature = DIetumiKqJu66XXVvDDHdepnP9M % 3 d& oauth_signature_method = HMAC-SHA1& oauth_timestamp = 1369452195, oauth_version = 1.0
  • 连接到该URL并检索数据,它有一个访问令牌
  • 继续使用该访问令牌做有趣的事情。

在步骤2中生成的URL是好的,因为我尝试手动复制它在谷歌浏览器,它显示了一个美丽的访问令牌,所以问题不存在(我认为)。在步骤3中,我有一个非常小的方法,它应该做一些非常基本的事情:连接到之前生成的URL,检索内容并返回它。

在我的localhost使用EasyPHP 12.1,它工作完美,像往常一样,但在免费的主机,我使用(000webhost)它不再工作了。当尝试连接时,它只是超时。HTTPCodeError为0,CurlError为" cannot connect to host".

这是连接到URL的方法。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);    
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$response = curl_exec($ch);
curl_close($ch);
return $response;

下面是该方法使用的URL示例:https://api.twitter.com/oauth/request_token?oauth_consumer_key=DLZZTIxpY19FnWJNtqw5A& oauth_nonce = 1369452195, oauth_signature = DIetumiKqJu66XXVvDDHdepnP9M % 3 d& oauth_signature_method = HMAC-SHA1& oauth_timestamp = 1369452195, oauth_version = 1.0

我一整天都在试图修复它,但现在我甚至不知道该怎么做。这些文件在我的本地主机和000webhost中是完全相同的。如果你能开导我,我会很高兴的。如果需要答案,我可以脱裤子。非常感谢。

有可能Twitter已经将你的免费主机的服务器或IP地址列入了黑名单。如果服务器上的其他用户滥用API,就会发生这种情况。

我唯一能想到的是你的免费虚拟主机服务阻止了它。你知道只要一切都很简单,这些服务就是完美的。一旦事情变得复杂,您就会遇到由提供者实现的限制。这些服务大多限制带宽、磁盘空间、服务器使用、支持、上传等。