如何使用cURL下载在PHP中使用HTTP摘要认证保护的文件?

时间:2016-05-17 18:20:52

标签: php linux http authentication curl

我在下载使用HTTP摘要验证保护的文件时遇到问题。我设法让curl的命令行版本工作:

regress

然而,当我尝试使用PHP cURL进行连接时,我只是没有得到任何东西,也没有弄清楚如何指定下载文件的位置(如果它连接成功):

curl --location -u Myusername:mypassword -C - --digest -k https://www.thefile.com/file.xml.gz > /location/to/download/file.xml.gz

任何人都可以了解如何将上述cURL命令行版本转换为PHP版本吗?我坚持做错了/错过了。

谢谢!

1 个答案:

答案 0 :(得分:0)

要指定输出文件的位置,您可以创建一个本地文件句柄以写出实际的文件数据,并将其存储在本地。

在上面的示例中添加以下内容...

$filename = "file.xml.gz";
$filehandle = fopen($filename, "w+");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FILE, $filehandle);

curl_close之后

fclose($filehandle);

要调试摘要身份验证,请启用写入标头。这会给您另一个文件,并返回标头。通常是未经授权的401,具有新的nonce值,然后在发送新的摘要时显示200 ok。

$headerfilename = "file.xml.gz.header";
$headerfilehandle = fopen($headerfilename, "w+");
curl_setopt($ch, CURLOPT_WRITEHEADER, $headerfilehandle);

curl_close之后

fclose($headerfilehandle);
相关问题