为什么nginx在我的PHP文件下载中返回403?

时间:2019-04-23 07:26:09

标签: php nginx

我将nginx 1.14.1与PHP结合使用,并且调用时出现问题,应导致文件下载。

PHP应用程序产生一个状态码为200的响应,并且文件内容被转储到正文中,但是从nginx上我得到以下答案(头)

HTTP/2 403 
server: nginx/1.14.1
date: Tue, 23 Apr 2019 07:19:19 GMT
content-type: text/html; charset=UTF-8
vary: Accept-Encoding
x-powered-by: PHP/7.2.17
strict-transport-security: max-age=31536000

我的PHP应用程序生成的标头未包含在nginx响应中。

Firefox产生错误“ /Users/myuser/Downloads/NBPKD9pN.mp4.part无法保存,因为无法读取源文件。请重试,或与服务器管理员联系。”

应下载的文件大小约为1 GB。

PHP应用程序的其余部分工作正常(不会导致403s)。

提供我完整的Nginx配置是否有帮助?

当我将同一文件放入Web根目录并直接调用(不使用PHP)时,下载工作正常。

编辑: PHP代码大致如下:

header('Content-Type: video/mp4');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Content-Length: ' . $filesize));
readfile($file);
die();

1 个答案:

答案 0 :(得分:0)

问题是PHP应用程序在较早的时候就使用过ob_start(),因此readfile()的输出进入了内存,超出了限制。