2009-11-07 74 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