我有一个php脚本,它使用标头标签将CDN中的远程文件下载到用户的计算机上。我这样做是为了掩盖文件来自哪里的真实URL。这是我的代码,其中$ file是文件的真实URL。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $file);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_exec($ch);
$filesize = curl_getinfo($ch,CURLINFO_CONTENT_LENGTH_DOWNLOAD);
curl_close($ch);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $filename);
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . $filesize);
ob_clean();
flush();
readfile($file);
exit;
我在linux机器上安装了它,它工作正常。我把它移到了运行IIS的Windows框中,现在我收到很多关于中断下载和下载未完成的投诉。它是我的代码或IIS或我的PHP配置导致问题吗?
答案 0 :(得分:0)
所以我弄清楚问题是什么。这是FastCGI的一个设置。要解决我进入IIS管理器,单击服务器然后打开“FastCGI设置”。对于其他经历过此事的人:
右键单击可执行文件并选择“编辑”并将“活动超时”设置从“600”(10分钟)更改为允许下载完成的另一个值(我输入“60000”)。对“请求超时”进行相同的更改。保存你的设置,你应该很高兴。