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 доступно, хотя это не так.

Другие вопросы по тегам