![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Bounty |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 12.12.2005 Репутация: нет Всего: нет |
У меня лежат файлы за пределами сервера, то есть выше public_html.
Как организовать ссылку на скачивание этого файла? Может сделать отдельный скрипт для скачивания? Как его написать? |
|||
|
||||
| Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 20 Всего: 42 |
Вариант 1. Организуйте скрипт для скачивания файла. В простейшем случае этот скрипт выдаст заголовок Content-Type с нужным типом данных и скопирует в stdout содержимое файла. Например, с помощью readfile(). Если отнесетесь к делу серьезнее, захотите учитывать подробности типа отдачи файла чанками, пользуйтесь лучше готовым решением. Например, посмотрите PEAR-овский класс HTTP_Download. Вся эта радость сработает, если не помешают настройки safe_mode и open_basedir
Вариант 2. Подходит для Apache. (Возможно, что-то подобное существует и для других серверов). Если установлен mod_alias, сделайте глобально или в пределах VirtualHost Alias, который заменит какую-нибудь директорию в пределах DocumentRoot той, в которой есть файлы для скачивания. Или не директорию, а конкретный файл. -------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
|||
|
||||
| Bounty |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 12.12.2005 Репутация: нет Всего: нет |
Спасибо, я учту ваши советы
|
|||
|
||||
| Bounty |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 12.12.2005 Репутация: нет Всего: нет |
Не могли бы вы поделиться кодом: как организовать конкретно скрипт для скачиваия файла, лежащего выше htdocs, please
|
|||
|
||||
| Diesel Draft |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: 1 Всего: 5 |
Чтоб вернуться на одну папку назад используй ../.
Теперь смотри, далее все так как будто єто под папка, но задаешь другой адрес. А еще лучше использовать абсолютные адреса |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
В PHP вы можете обратиться к файлам не выше той директории, в которой имеет права пользователь от имени которого работает веб-сервер.
|
|||
|
||||
| Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 20 Всего: 42 |
Если права на чтения скачиваемых файлов у сервера есть, можете использовать что-то типа:
-------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
|||
|
||||
| Diesel Draft |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: 1 Всего: 5 |
Кстати можно использовать .htaccess , только не помню как
|
|||
|
||||
| Golda |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 20 Всего: 42 |
Прошу прощения за предыдущий пост. Был технический сбой.
Пример php-скрипта (несколько упрощенный, правда) для скачивания zip-файла
Серверу достаточно прав на чтения $file. Пример решения через конфигурацию Apache, используя mod_alias.
Здесь /download - фиктивная папка, которой рельно не существует. Пусть DOCUMENT_ROOT Вашего сайта находится в дирректории /var/www/www.mysite.com а сам сайт доступен по адресу http://ww.mysite.com Тогда URL http://www.mysite.com/download/myfile.zip должен был бы вести к файлу /var/www/www.mysite.com/download/myfile.zip. Но благодаря Alias он ведет в /home/golda/my_folder_with_files_for_download/myfile.zip Diesel Draft, просто составить URL ведущий в папку вне DOCUMENT_ROOT не получится. Сервер об этом позаботится, даже если написать что-то типа http://www.mysite.com/../myfile.zip Поэтому предоставить пользователю напрямую URL для закачки такого файла, просто поколдовав над путем, не удастся. Или я неправильно поняла, что Вы имели в виду? -------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
||||
|
|||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |