2010-09-17 107 views
2

我有一個使用捲曲下面的PHP代碼:爲什麼cURL報告一個無效的IP地址爲錯誤?

$ch = curl_init(); 

curl_setopt($ch,CURLOPT_URL,"http://area51.stackexchange.com/users/flair/31.json"); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 

$a_data = json_decode(curl_exec($ch)); 

echo curl_error($ch); 

然後我得到以下錯誤,當我嘗試通過HTTP訪問的頁面:

無法連接到0.0.0.31:無效參數

但是,從命令行運行時,代碼工作正常。

什麼可能導致cURL嘗試連接到0.0.0.31,這是AFAIK,甚至沒有一個有效的IP地址?

+0

我假設你已經檢查過DNS解析工作正常。 cURL是否能夠從命令行正確運行? – 2010-09-17 23:28:38

+0

@Tim:是的。從同一臺服務器的命令行工作正常。 – 2010-09-17 23:31:35

+0

嗯。很奇怪。看到我的問題/建議下面。 – 2010-09-18 00:18:28

回答

3

「什麼可能導致cURL嘗試連接到0.0.0.31,這是AFAIK,甚至沒有有效的IP地址?」

您的DNS已被打亂。我測試了你的代碼,它工作。

0

當你說「代碼在命令行運行時工作正常」,你的意思是你已經使用PHP CLI解釋器運行它了嗎?如果是這種情況,您可以檢查網絡服務器上的php -i輸出與phpinfo()輸出之間是否存在明顯的不匹配。這可能是一些奇怪的版本不匹配或環境問題,儘管你的猜測和我的一樣好。

如果您(正如我原先想的那樣)只是在討論運行curl命令,您可以嘗試檢查版本號或環境變量。

0

我有同樣的問題。

我想你可能會做的是構造URL像這樣:

$url = "http://area51.stackexchange.com/users/flair/" + 31 + ".json"; 

,由於某種原因的網址,然後被轉換爲0.0.0.31。

而是嘗試concatinate字符串,像這樣:

$url = "http://area51.stackexchange.com/users/flair/" . 31 . ".json"; 

至少解決了我的問題!

相關問題