下载PDF-失败:网络错误,PHP-FPM和Nginx
我有一个下载pdf的非常简单的脚本:下载PDF-失败:网络错误,PHP-FPM和Nginx,php,pdf,nginx,download,Php,Pdf,Nginx,Download,我有一个下载pdf的非常简单的脚本: $path = __DIR__.'/sample_file.pdf'; $pathinfo = pathinfo($path); $fsize = filesize($path); $filename = $pathinfo['basename']; header('Content-Type: application/pdf'); header("Pragma:public"); header("Content-Disposition:attachment
$path = __DIR__.'/sample_file.pdf';
$pathinfo = pathinfo($path);
$fsize = filesize($path);
$filename = $pathinfo['basename'];
header('Content-Type: application/pdf');
header("Pragma:public");
header("Content-Disposition:attachment;filename=" . $filename);
header('Content-Length: ' . $fsize);
header("Pragma: no-cache");
@readfile($path);
exit;
这适用于小于10mb的文件。但是任何超过这个的东西我都会出错,下载失败。已经在多个浏览器中进行了尝试,并获得了类似的结果。在所有情况下,下载都会失败
Chrome:失败:网络错误
Firefox:[filename].pdf.part无法保存,因为无法读取源文件。
Opera:中断:网络错误
IE(10):[filename]。无法下载pdf。
我知道文件路径是正确的,否则它无法处理小于5mb的文件
阅读readfile
上的php文档()有些人建议在调用readfile
之前禁用output\u buffering
(php.ini中当前设置为4096
)。我还没有尝试过,但我不相信这是解决办法
zlib.output\u compression
已禁用。我在日志中没有看到任何错误。我在Chrome inspector的网络窗格中也没有看到任何错误
我尝试过用块下载,但得到了相同的结果。我研究过类似的答案,但似乎都是特定于浏览器的,即在某些浏览器中工作,但在其他浏览器中不工作 可能您使用暂停或类似的方法,目标文件被锁定
您的安全软件可能正在扫描并锁定该文件,在暂停下载后,该文件可能仍在系统临时文件夹中。下载需要多长时间?@bassxzero它会在几秒钟内失败。甚至都没有真正开始。