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