PHP 7.4 文件下载失败
1. 运行环境
PHP 7.4
output_buffering = On
output_buffering = 4096
开发本地使用 docker 环境测试过可以正常下载,但服务器环境没有使用docker。不知道是否和 PHP 安装有关系
2). 当前使用的 php/php-fpm 版本?
PHP 版本:7.4
php-fpm 版本:7.4
3). 当前系统
CentOS7
4). 业务环境
生产环境
5). 相关软件版本
nginx version: nginx/1.16.1
2. 问题描述?
无法正确下载文件。
能弹出文件下载,但文件总数下载中断或者下载到的文件大小不对。
经检查,readfile 是可以正常读取到文件的。文件权限也没问题。
下载的代码如下:
$asset = 获取到的文件信息
ob_start();
$filename = $asset['filename'];
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . $asset['filesize']);
ob_clean();
ob_end_flush();
readfile($file);
exit();
3. 您期望得到的结果?
文件正常下载
4. 您实际得到的结果?
没有报错信息,但文件无法正常下载。
应该是 readfile($fileName);把
php 默认缓冲区 4k 大小
可以用Storage::download()下载试试
有人遇到过这个神奇的问题么。。。