PHP - 如何确定X-Sendfile是否可用并已安装?

时间:2012-09-02 04:25:00

标签: php header x-sendfile

基本上,我想将一个标题X-Sendfile发送到浏览器发送文件,但如果X-Sendfile不可用或安装在服务器上,我不想调用它。我怎样才能在PHP中检查这个?或者,如果无法检查PHP,那么如何检查它是否已安装PERIOD?我宁愿在PHP中检查是否存在X-Sendfile,因为这样做会更容易,因为这是一个可以在其他站点和服务器上运行的包的一部分...也许如果我只是使用它使用PHP header函数,如果没有安装它会返回一些东西吗?

谢谢你们:)

4 个答案:

答案 0 :(得分:6)

APACHE模块mod_xsendfile处理X-Sendfile标题

要检查APACHE模块mod_xsendfile是否可用并安装在服务器上,您可以使用apache_get_modules()功能。

您不能只设置标题并检查模块是否已安装。

答案 1 :(得分:1)

获取apache模块列表,看看x-sendfile是否在列表中 你可以使用http://php.net/manual/en/function.apache-get-modules.php 如果没有安装,x-sendfile头将进入浏览器 如果已安装,模块将过滤掉标题。

答案 2 :(得分:0)

试试这个:

    if (in_array('mod_xsendfile', apache_get_modules())) {
        header("X-Sendfile: $file");
    } else {
        error_log("Warning! mod-xsendfile is NOT INSTALLED - sending file the old fashion way.....");
        header('Content-Length: ' . filesize($file) );
        print file_get_contents($file);
    }

答案 3 :(得分:0)

这不正确。如果相关位置的XSendFile未设置为On但模块已加载,则会错误地假设xsendfile使用可用,尽管不是。