2013-04-26 106 views
0

當試圖連接到Twitter API使用捲曲和PHP,我得到以下錯誤:cUrl作者錯誤:「無法解析主機‘search.twitter.com’」

無法解析主機「搜索.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); 

謝謝!

+0

請更新您的代碼以反映*不*工作 - 例如我沒有在您的代碼段中的任何地方看到「search.twitter.com」。 – Madbreaks 2013-04-26 17:00:59

+0

爲什麼亂捲曲的dns設置?默認值應該可以正常工作。 – 2013-04-26 17:09:49

回答

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接受網址作爲遠程文件使用。所以,你可以嘗試這樣的:

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

嘗試添加第二個域名服務器/etc/resolv.conf中 如:域名服務器8.8.8.8 這是谷歌的域名服務器

我發現了同樣的問題,在使用codebird.php。我正在超時。
我們的名字服務器工作,但它似乎暫時超時。當我添加第二臺名稱服務器時,問題就消失了。