2011-09-16 27 views
1

我正在嘗試使用cURL從外部服務器下載映像。此代碼的工作在我的本地Windows XAMPP安裝:cURL在不同的服務器上以不同的方式運行

$ch = curl_init("http://some.server.com/some-image.jpg"); 
$fp = fopen("testimage.jpg", 'wb'); 
curl_setopt($ch, CURLOPT_FILE, $fp); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_exec($ch); 
curl_close($ch); 
fclose($fp); 

然而,當我採取完全相同的代碼和我的生產服務器上運行它時,圖像不會被成功下載。 testimage.jpg被創建,但文件大小爲0。對curl_errno的調用返回0.是否有影響cURL操作的系統設置?

爲了記錄,我使用的網址確實會導致重定向發生。當我在瀏覽器中輸入網址時,當圖像顯示時,地址欄中會出現不同的網址。不過,我的印象是,CURLOPT_FOLLOWLOCATION是所有需要遵循重定向的,特別是因爲這就是我需要在本地完成這項工作所需的一切。我錯過了什麼嗎?

回答

1

首先確保你明確envoke顯示錯誤和使用error_reporting通過添加以下:

ini_set('display_errors', 'on'); 
error_reporting(E_ALL); 

另外,請檢查你的防火牆設置,以確保請求能夠成功地通過發送。

+0

設置此讓我看到這個警告 - 「警告:curl_setopt():CURLOPT_FOLLOWLOCATION無法在啓用safe_mode或open_basedir設置時激活」。這似乎是不言自明的,我應該能夠從這裏拿走它。謝謝! –

1

沒有爲捲曲稱爲冗長的設置,

curl_setopt($ch, CURLOPT_VERBOSE, true); 

我發現這非常有幫助在這樣的情況。它將打印捲曲和遇到的任何HTTP代碼的所有內容。設置這個,讓我們知道你得到什麼錯誤。

祝你好運。

相關問題