php – 找不到Xsendfile文件

我在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");
点赞