Я пытаюсь отправить файл пользователю с помощью xsendfile в рамках механизма воспламенения кода.
Все установлено правильно, моя проблема в том, что, похоже, он работает только с маршрута, хотя все страницы в любом случае приходят из index.php.
Это моя функция:
function _output_file($name, $root_location, $public_location = FALSE)
{
if (function_exists('apache_get_modules') && in_array('mod_xsendfile', apache_get_modules())) {
header ('Content-Description: File Transfer');
header ('Content-Type: application/octet-stream');
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE") != FALSE) {
header ('Content-Disposition: attachment; filename='.urlencode($name));
} else {
header ('Content-Disposition: attachment; filename="'.$name.'"');
}
//86400 is one day
header ('Expires: '.gmdate('D, d M Y H:i:s', (TIME_NOW + 86400)));
header ('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header ('Pragma: public');
header ('X-Sendfile: '.$root_location);
exit;
} else {
redirect(site_url($public_location));
}
}
Если я помещаю это в начало моего index.php и загружаю корень, он работает нормально, но если я пытаюсь получить к нему доступ из domain.com/controller/function, он возвращает ошибку 404.
Он определенно использует файл index.php, поскольку, если я заменю вызов функции на die ("test"); это отображается на экране.
Я полагаю, что это как-то связано с разрешениями, которые xsendfile имеет для доступа к файлу, но, поскольку он работает из корневого index.php, я бы подумал, что у него будут полные права доступа, предположительно в зависимости от того, какой URL-адрес запроса, который Я нахожу странным.
Итак ... есть ли у кого-нибудь какие-либо предложения относительно того, как я могу заставить xsendfile работать через codeigniter, с URL-адреса, такого как "domain.com/files/get/12"?
?"