0

我正在尝试在 Mac OS X 服务器上的 apache Web 服务器中安装 x_sendfile。安装一切似乎都很好,并且 httpd.conf 配置了 "LoadModule xsendfile_module libexec/apache2/mod_xsendfile.so""XSendFile ON"

如果我从终端运行“httpd -M” ,我可以在列表中找到“xsendfile_module(共享)”

但是在 phpinfo() 或 apache_get_modules() 中没有列出 x-sendfile。如果我尝试在我的 php 代码中使用 x-sendfile 来下载任何文件,浏览器只会下载一个 0 kb 的文件。不过,我可以在标头数据中看到 x-sendfile 标头标签。

有什么建议么?

4

2 回答 2

1

确保您的 httpd.conf 文件中有这一行。在您的页面的设置下添加它:

XSendFile 在 XSendFilePath /dir-where-the-file-gets-downloaded-from/

于 2012-09-11T22:30:33.063 回答
0

我在 CentOS 上遇到了类似的问题。我补充说:

XSendFile On 
XSendFilePath /dir-where-the-file-gets-downloaded-from/

到 httpd.conf,但是我也确保在 php 页面本身上使用绝对路径

header('Content-Type: '.$formatMIME);
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=User_sees_this.pdf"); 
header("X-Sendfile: 'absolute_path_goes_here'");

据我所知,如果 httpd -M 显示模块已安装,上面的代码应该可以工作。您不会在 phpinfo 中看到 xsendfile,因为它不是 php 的扩展。我无法与 apache_get_modules() 交谈。

同样,这是基于我个人经验的评论,并不打算成为明确的答案。

于 2013-07-12T18:32:37.160 回答