2009-11-07 69 views
0

這是哪門子環節我想下載:下載程序與捲曲

http://username:[email protected]/dl/file.zip 

編輯:計算器,似乎走怪異用冒號,其用戶名冒號密碼。

現在,如果我退出網站並使用上述網址模式,則會成功進行身份驗證,並且我可以成功下載該文件。

我有這樣的捲曲腳本:

<?php 
echo "Attempting to download...<br />"; 
$out = fopen("zip.zip", 'wb'); 
if ($out == FALSE){ 
die('File could not be opened, exiting.'); 
} 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_FILE, $out); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_URL, $file); 

curl_exec($ch); 
curl_close($ch); 
fclose($out); 
?> 

,由於某種原因,它只是一個下載文件0KB。我非常肯定編碼是正確的,但如果它不起作用,它就不能工作。

任何幫助?謝謝。

回答

0

你有沒有嘗試過使用curl在shell中的URL?

+0

嗨,我沒有root權限訪問我的託管帳戶,因此我無法運行任何shell命令。但主機允許連接到端口80,所以我不認爲這是問題。 – Andy 2009-11-07 02:45:07

+0

你能夠使用libcurl連接到其他http資源嗎?一些網絡主機阻止連接。 – brianegge 2009-11-07 06:51:55

1

嘗試增加後續地點選擇:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

編輯:解釋 根據我的經驗,很多下載鏈接重定向到實際包含文件的另一個鏈接。默認情況下,捲曲不遵循重定向,並且要求首先啓用該選項。

要調試的問題,您可以設置CURLOPT_RETURNTRANSFER選項,然後打印curl_exec結果:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$result = curl_exec($ch); 
print_r($result); 

如果標題包含Location: ...參數,那麼這就是你的問題。

+0

我得到這個錯誤:CURLOPT_FOLLOWLOCATION不能被激活時,在safe_mode或open_basedir設置 - 我想這可能是我的問題? – Andy 2009-11-07 02:48:54

+0

@Andy,看看更新的答案 – notnoop 2009-11-07 02:57:38

+0

看到這個職位的safe_mode重定向解決方法:http://www.edmondscommerce.co.uk/blog/curl/php-curl-curlopt_followlocation-and-open_basedir-or-safe-mode/ 或者,從命令行(在Cygwin for windows下)在本地運行curl,並查看是否可以將數據發佈到查找目標。運行'curl -v'將顯示所有發生的重定向。 – brianegge 2009-11-07 19:37:42

0

curl_setopt($ ch,CURLOPT_USERPWD,$ username。':'。$ password);

+0

也查看周圍一個,但更多,我認爲它需要cookies以及驗證...因爲我有一個用戶名和密碼cookie在我的瀏覽器。我會盡量讓cURL接受cookie。 – Andy 2009-11-07 02:55:14