Как отдать статический файл с сервера через PHP скрипт?
Задача:
Есть файл на сервере /file.pdf
Как можно скачать этот файл через PHP скрипт?
Приходит решение в лоб — выкачать файл с сервера с помощью file_get_contents, а затем вывести с нужными заголовками, однако если файл будет слишком большой, то скрипт будет выполняться очень долго.
Мне это нужно, чтобы пользователь не мог знать прямую ссылку на файл, а также, чтобы разграничить доступ к файлу.
Let me google it for you: google.com/search?q=отдать+файл+PHP
очень сложный поисковый запрос, правда?
А, главное, найдет тебе статьи, написанные какими-то левыми людьми.
То ли дело задать вопрос на тостере, и получить ответ от корифеев, строчащих ответы между ковырянием в носу и выпрашиванием у мамки прощения за очередную двойку.
FanatPHP: очевидно же, скрыть прямую ссылку, о чём и спрашивает автор вопроса. К примеру, извлекать из ссылки Id файла, передавая его на обработку скрипту, который обеспечит разграничение доступа.
А если совсем уж занаркоманить - разграничивать доступ можно прямо из .htaccess, генерируя набор условий для работающего RewriteRule'a под конкретного пользователя (которого можно узнавать например по ip) в момент загрузки/создания файла на сервере.
Если вы не видите возможностей, это не значит, что их нет =)
На shared хостингах - только решение в лоб, через чтение в память и отдачу наружу.
На своем сервере/vps - правильно поставить фронтом nginx и использовать заголовок x-accel-redirect www.opennet.ru/base/net/nginx_x_accel_redirect.txt.html