6

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

多谢你们 :)

4

4 回答 4

6

The APACHE module mod_xsendfile processes the X-Sendfile headers

To check if the APACHE module mod_xsendfile is available and installed on the server, you could use apache_get_modules() function.

You cannot just set the header and check if the module is installed or not.

于 2012-09-02T04:35:20.500 回答
1

To get a list of apache modules and see if x-sendfile is in the list you could use http://php.net/manual/en/function.apache-get-modules.php If it's not installed, the x-sendfile header will get to the browser if it is installed, the module will filter out the header.

于 2012-09-02T04:35:21.883 回答
0

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

于 2013-05-13T17:46:04.217 回答
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);
    }
于 2012-09-02T07:51:42.883 回答