【问题标题】:Using X-Sendfile with Apache/PHP在 Apache/PHP 中使用 X-Sendfile
【发布时间】:2008-09-17 05:07:08
【问题描述】:

我似乎找不到太多关于 X-Sendfile 的文档或 PHP 的示例代码(有一些 rails 代码)。

任何人以前使用过它并且介意快速提供代码和简要说明吗?

【问题讨论】:

    标签: php apache x-sendfile


    【解决方案1】:

    X-Sendfile 是一个 HTTP 标头,所以你想要这样的东西:

    header("X-Sendfile: $filename");
    

    如果配置正确,您的网络服务器会选择它。以下是更多细节:

    http://www.jasny.net/articles/how-i-php-x-sendfile/

    【讨论】:

    • 我按照链接上的教程进行操作,但是当我使用 mod-xsend 下载文件时,我得到文件大小二进制文件(0 字节)...我做错了什么?更新:我自己弄清楚了。我需要将#enable sending files from parent dirs -> XSendFileAllowAbove On 添加到我的 .htaccess 文件中,因为我的下载不在 webroot 文件夹中。
    • 对于未来的读者:XSendFileAllowAbove 已被弃用;使用 XSendFilePath
    【解决方案2】:

    如果无法调整 Web 服务器配置,请考虑 PHP 的标准 readfile() function。它不会像 sendfile 那样快,但它会更广泛地兼容。另请注意,在执行此操作时,您还应该至少发送一个 Content-Type 标头。

    【讨论】:

    • 请注意,如果您使用readfile(),您将不支持恢复或部分下载(请求范围)或客户端缓存(即,在需要时返回304 Not modified)(或者您将需要使用 PHP 代码自己处理所有这些 - 应该有一些代码 sn-ps 正是这样做的)。
    猜你喜欢
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    相关资源
    最近更新 更多