基本上,我想将标头 X-Sendfile 发送到浏览器以发送文件,但如果 X-Sendfile 不可用或未安装在服务器上,我不想调用它。我如何在 PHP 中检查这个?或者如果这不可能在 PHP 中检查,那么如何检查它是否安装了 PERIOD?我宁愿在 PHP 中检查 X-Sendfile 的存在,因为这样做对我来说更容易,因为这是一个也将在其他站点和服务器上运行的包的一部分......也许如果我只是使用它带有PHPheader
函数,如果没有安装它会返回一些东西??
多谢你们 :)
基本上,我想将标头 X-Sendfile 发送到浏览器以发送文件,但如果 X-Sendfile 不可用或未安装在服务器上,我不想调用它。我如何在 PHP 中检查这个?或者如果这不可能在 PHP 中检查,那么如何检查它是否安装了 PERIOD?我宁愿在 PHP 中检查 X-Sendfile 的存在,因为这样做对我来说更容易,因为这是一个也将在其他站点和服务器上运行的包的一部分......也许如果我只是使用它带有PHPheader
函数,如果没有安装它会返回一些东西??
多谢你们 :)
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.
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.
这是不正确的。如果相关位置的 XSendFile 未设置为 On 但模块已加载,它将错误地假设 xsendfile 使用可用,尽管它不可用。
尝试这个:
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);
}