Обычно файлы, которые вы хотите загружать, должны находиться внутри корня документа или где-то еще глубже внутри него.Но, если вы хотите, чтобы файлы загружались только в течение некоторого времени (например, вы хотите сначала проверить учетные данные пользователя или считать загрузки в базе данных), вы можете написать сценарий загрузки.Простейшая форма будет выглядеть примерно так:
<?php
header('Content-Disposition: attachment;filename=hello.txt');
readfile('/path/to/file.txt');
?>
Обратите внимание, что есть еще лучший способ использования специального модуля Apache под названием xsendfile
.С этим вы можете сделать что-то вроде этого:
<?php
header('Content-Disposition: attachment;filename=hello.txt');
header('X-Sendfile: /path/to/file.txt');
?>
Apache увидит второй заголовок, уберет его и отправит содержимое файла file.txt.Приятно то, что ваш ресурсоемкий PHP-скрипт уже остановился, и вы не будете использовать какие-либо ограничения времени или PHP.