php readfile() 下载文件失败的解决方案
本文将解决使用 php readfile() 下载文件时遇到的常见问题:在本地环境中文件加载损坏或大小为 0kb。
问题详情
在正式环境中,使用以下代码下载其他网站文件是正常的:
立即学习“PHP免费学习笔记(深入)”;
header("Content-Type: application/force-download"); header('Content-Description: File Transfer'); header("Content-Disposition: attachment; filename=".(文件名)); readfile(远程文件路径);
然而,在本地虚拟机或测试站中,下载的文件损坏,大小为 0kb。
经调查,导致此问题的根源在于 php 版本较旧,编译时添加了 –with-curlwrappers 配置。
要解决此问题,需要重新编译 php,不使用 –with-curlwrappers 配置。
步骤:
- 备份现有 php 配置。
- 重新编译 php,不使用 –with-curlwrappers 配置。
- 重启 web 服务器。
重新编译 php 后,下载文件功能应正常工作,不再出现损坏或大小为 0kb 的问题。