我已经整理了一个基本的PHP脚本,该脚本在执行时应该触发存储在服务器上的文件的下载。我从http://php.net/manual/en/function.readfile.php注意到使用了readfile函数,并使用了相同的代码。
这曾经比较早,但现在,我突然开始收到404页了。以下是我的摘录:
Barba.Pjax.start();
当我在其间插入调试脚本时,我能够看到它们,以及header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($serverPath));
readfile($serverPath);
exit(0);
函数从文件接收的奇怪数据,因为文件是PDF。但是,就他们自己而言,这只是给了我一个404页面,没有任何错误/警告。
有人可以指出我在代码中遇到的任何问题,或者我可以调查的任何问题吗?任何指针都会非常有用,因为我几乎整天都花在论坛和调试上,但仍然没有任何解决方案。
修改:
以下是从服务器收到的响应标头:
readfile
编辑2:
所以,我尝试了localhost方法,代码确实在我的本地环境中运行得很好。 PHP版本在两个位置都相同。除此之外,我应该查看服务器级别以查找此行为背后原因的任何指针?
答案 0 :(得分:0)
您是否检查过该文件是否存在且可读?请考虑使用file_exists和is_readable等功能来确保您的代码按计划运行。
请务必检查服务器返回HTTP 404错误时获得的标头,您甚至可能无法访问代码,错误可能在其他地方。