cUrl错误:“无法解析主机'search.twitter.com'”

时间:2013-04-26 16:59:33

标签: php curl twitter

当尝试使用cUrl和PHP连接到Twitter api时,我收到以下错误:

无法解析主机'search.twitter.com'

在它正常工作之前,请求在我的浏览器中有效。在尝试连接到example.com时,我确实获得了该页面。我也尝试了以下代码,我得到了同样的错误:

$_h = curl_init();curl_setopt($_h, CURLOPT_HEADER, 1);
curl_setopt($_h, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($_h, CURLOPT_HTTPGET, 1);
curl_setopt($_h, CURLOPT_URL, 'http://www.example.com' );
curl_setopt($_h, CURLOPT_DNS_USE_GLOBAL_CACHE, false );
curl_setopt($_h, CURLOPT_DNS_CACHE_TIMEOUT, 2 );

var_dump(curl_exec($_h));
var_dump(curl_getinfo($_h));
var_dump(curl_error($_h));

这可能是DNS问题吗?有没有其他选项可以用PHP获取JSON数据?

编辑:这是最初出错的代码:

$json_url = "https://search.twitter.com/search.json?q=" . 'bitterrific' . "&rpp=10&result_type=all";
    $ch = curl_init();
    $timeout = 100;
    curl_setopt($ch,CURLOPT_URL,$json_url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
    $data = curl_exec($ch);
    //curl_close($ch);
    $content = json_decode($data);
    $output = array();
    echo "DATA: ".curl_error($ch);

谢谢!

2 个答案:

答案 0 :(得分:1)

我没有发现您的代码存在问题。

search.twitter.com的工作原理:

$ host search.twitter.com
search.twitter.com is an alias for s.twitter.com.
s.twitter.com has address 199.59.148.11
s.twitter.com has address 199.59.149.243
s.twitter.com has address 199.59.148.84

您应该检查服务器的DNS设置。

您还要求使用PHP获取json数据的其他方法。 PHP接受将URL用作远程文件。所以你可以尝试类似的东西:

$content = file_get_contents("https://search.twitter.com/search.json?q=" . 'bitterrific' . "&rpp=10&result_type=all");
$content = json_decode($content);
var_dump($content);

答案 1 :(得分:0)

尝试在/etc/resolv.conf中添加第二个名称服务器 例如:nameserver 8.8.8.8 这是谷歌名称服务器

我在使用codebird.php时发现了同样的问题。我正在暂停。
我们的名字服务器工作,但它似乎偶尔会超时。当我添加第二个名称服务器时,问题就消失了。