Я установил mod_xsendfile и, кажется, все прошло успешно; xsendfile.load появляется в /etc/apache2/mods-enabled, и я не обнаружил ошибок при запуске тестового сценария. Однако каждый раз, когда я запускаю его, я получаю файл 0B.
Вот мой тестовый скрипт:
$file = 'sample.mp4';
$path = '/var/storage/media/'.$file;
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
header("Content-type: application/octet-stream");
header("X-Sendfile: $path");
Очевидно, у меня есть файл, хранящийся в /var/storage/media/sample.mp4, он весит всего 25 МБ и отлично обслуживается, если я сделаю это следующим образом:
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($path));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($path));
ob_clean();
flush();
readfile($path);
exit;
У меня также есть это в файле .htaccess как /var/storage, так и /var/www (файлы, в которых все это хранится в /var/www/files/index.php):
XSendFile on
XSendFileAllowAbove on
Как я уже сказал, я не получаю ошибок, и PHP может получить доступ к файлу, но я должен что-то упустить с конфигурацией x-sendfile... это напоминает мне, я заметил, что в модах почти каждый мод имеет расширение . load и .conf, но xsendfile имеет только .load, как и некоторые другие, так что это как-то связано с этим?
Спасибо.