使用cURL以编程方式从站点的成员区域下载

使用cURL以编程方式从站点的成员区域下载,curl,Curl,这是我想下载的链接类型: http://username:password@example.com/dl/file.zip 编辑:stackoverflow的用户名冒号和密码冒号看起来很奇怪 现在,如果我退出网站并使用上面的URL模式,它将成功地进行身份验证,我可以成功地下载文件 我有一个卷曲脚本: <?php echo "Attempting to download...<br />"; $out = fopen("zip.zip", 'wb'); if ($out ==

这是我想下载的链接类型:

http://username:password@example.com/dl/file.zip
编辑:stackoverflow的用户名冒号和密码冒号看起来很奇怪

现在,如果我退出网站并使用上面的URL模式,它将成功地进行身份验证,我可以成功地下载文件

我有一个卷曲脚本:

<?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);
?>

出于某种原因,它只下载一个0 KB的文件。我很确定编码是正确的,但是如果它不工作就不可能


有什么帮助吗?谢谢。

您尝试过在shell中使用curl创建URL吗?

尝试添加以下位置选项:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
编辑:解释 根据我的经验,许多下载链接被重定向到另一个实际包含该文件的链接。默认情况下,Curl不遵循重定向,并且需要先启用该选项

要调试问题,可以设置
CURLOPT\u RETURNTRANSFER
选项,然后打印
curl\u exec
结果:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

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

如果标题包含
位置:…
参数,则这是您的问题。

curl\u setopt($ch,CURLOPT\u USERPWD,$username.:'。$password)

您好,我没有主机帐户的root访问权限,因此无法运行任何shell命令。但是主机允许连接到端口80,所以我认为这不是问题所在。您可以使用libcurl连接到其他http资源吗?某些web主机会阻止连接。我遇到以下错误:当处于安全模式或设置了open basedir时,无法激活CURLOPT\u FOLLOWLOCATION-我认为这可能是我的问题?请参阅本文了解安全模式重定向的解决方法:或者,从命令行(在Cygwin for windows下)在本地运行curl,并查看是否可以将数据发布到查找目的地。运行
curl-v
将显示所有发生的重定向。同样不起作用,在查看了a但更多之后,我认为它还需要cookies来验证。。。因为我的浏览器中有一个用户名和密码cookie。我会试着让cURL接受饼干。