使用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接受饼干。