我在Dreamhost上使用mod_xsendfile下载大型zip文件(50mb)
我在.htaccess中启用了mod_xsendfile和“XSendFile on”.
当我给予
header('X-Sendfile: "'.$fullPath.'"');
命令,使用服务器上存在的文件的完整路径,我收到一个网页找不到错误.
readfile()发现文件很好并提供服务,但.zip文件已经太大了,无法处理php.
您可以提供的任何帮助将不胜感激!
最佳答案 我有同样的问题,并能够解决它,所以这个解决方案可能适合你.
首先要检查你的Apache错误日志(对我来说,位于/ etc / httpd / logs中).这是我在我的发现:
[Wed Sep 05 14:29:02 2012] [error] [client ?.?.?.?] (20023)The given path was above the root path: xsendfile: unable to find file: /path/to/file
问题是,我想要服务的文件位于httpd.conf中定义的DocumentRoot(对我来说,/ var / www / html)之上.
我的解决方案是在DocumentRoot目录中创建一个符号链接,该符号链接指向包含我要提供的文件的目录.我使用以下命令:
ln -s /path/to/file_dir /path/to/doc_root/file_dir
然后,我所要做的就是将PHP点xSendFile添加到符号链接:
header("X-SendFile: /path/to/doc_root/file_dir/file_name.ext");