PHP - Как узнать, доступен ли и установлен ли X-Sendfile?
По сути, я хотел бы отправить заголовок X-Sendfile в браузер для отправки файла, но я не хочу вызывать его, если X-Sendfile недоступен или не установлен на сервере. Как я могу проверить это в PHP?? Или если это невозможно проверить в PHP, то как проверить, что установлен PERIOD? Я бы предпочел проверить наличие X-Sendfile в PHP, поскольку мне было бы легче сделать это, поскольку это часть пакета, который будет работать и на других сайтах и серверах... Возможно, если я просто использую это с PHP header
функция, она вернет что-то, если не установлена ??
Спасибо, парни:)
4 ответа
Модуль APACHE mod_xsendfile обрабатывает X-Sendfile
заголовки
Чтобы проверить, доступен ли модуль APACHE mod_xsendfile и установлен ли он на сервере, вы можете использовать функцию apache_get_modules().
Вы не можете просто установить заголовок и проверить, установлен модуль или нет.
Чтобы получить список модулей Apache и посмотреть, есть ли в списке x-sendfile, вы можете использовать http://php.net/manual/en/function.apache-get-modules.php Если он не установлен, x-sendfile заголовок попадет в браузер, если он установлен, модуль отфильтрует заголовок.
Попробуй это:
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);
}
Это не правильно. Если для XSendFile не установлено значение "Вкл" для соответствующего местоположения, но модуль загружен, он будет ложно предполагать, что использование xsendfile доступно, хотя это не так.