У меня есть файл на сервере с именем file.pdf, и я не могу получить к нему прямой доступ, например:
servername.com/file.pdf
,
потому что это на верхнем уровне папки, куда перенаправляет servername.com.
Мне нужно использовать php для получения файла, а затем вывода, так что это будет выглядеть так:
servername.com/get_file.php?filename=file.pdf
Это то, что я пытался, однако, это не работает:
<?php
$filename = $_GET['filename'];
header('Location: ../seedbox/downloads/knygos' . $filename);
?>
Любое решение о том, как я могу получить доступ к этому файлу?
В вашем «решении» вы снова совершаете ту же ошибку. Вы снова пытаетесь получить доступ к файлу напрямую через HTTP, который находится ниже вашего веб-корня (общая папка, httpdocs, …).
Вы уже предлагаете правильное решение, а именно получить файл с помощью PHP и обработать его, но тогда вы этого не делаете. У вас есть два основных решения проблемы:
Переместить файл в общедоступное место
Здесь вы можете навсегда изменить местоположение файла на что-то вроде mysite.com/downloads/file.pdf
или же копия это там динамически с PHP:
copy('../files/file.pdf', 'downloads/file.pdf');
Подавать файл на лету
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=file.pdf");
readfile('../files/file.pdf');
Других решений пока нет …