php用readfile()下载文件时得到的文件结尾多出一组数字内容

PHP Version 5.4.45

//这是原来用的代码:
echo readfile($files[$i]);
fclose($outfile);

php用readfile()下载文件时得到的文件结尾多出一组数字内容

▲可以看到下载得到的文件结尾会多出一串数字(其实就是该文件的size,字节数)。

这个问题很奇怪,在本地机测试没有出现这种情况,一放到公网服务器上测试就出现了。代码、PHP版本都是同样的,对比了两者的配置文件也没有发现可能有关的配置项,无奈只好X度一波,也没找到有效的解决方法。最后灵光一闪,会不会是readfile()函数的参数没写完整(因为是抄来的代码,没细看过readfile()函数的具体用法)?赶紧查询一下,果然发现是用法不对:“readfile()函数会读入一个文件并写入到输出缓冲,若成功,则返回从文件中读入的字节数”。所以抄来的代码在前面加了echo就使得下载得到的文件结尾会多出一串数字!真是坑啊!
去掉readfile()前面的echo即可:

//正确用法的代码:
readfile($files[$i]);
fclose($outfile);

 

上一篇:Cypress系列(94)- readFile() 命令详解


下一篇:windows 手动安装 composer