Открытие удаленного файла

Задача
Необходимо открыть файл, доступ к которому осуществляется посредством HTTP или FTP.

Решение
Передайте URL файла функции fopen():

$fh = fopen('http://www.example.com/robots.txt','r') or die($php_errormsg);

Обсуждение
Когда функции fopen() передается имя файла, начинающееся с http://, она возвращает страницу, получаемую в результате запроса HTTP/1.0 GET (чтобы обеспечить запросы к виртуальными хостам, в вызов также включается заголовок Host). С помощью дескриптора файла можно получить доступ только к телу ответа, но не к самому заголовку. Вызов HTTP позволяет читать файлы, но не записывать.

Если функции fopen() передается имя файла, начинающееся с ftp://, она возвращает указатель к определенному файлу, полученный посредством пассивного режима FTP. Через FTP можно открыть файл или на чтение, или на запись, но не в обоих режимах одновременно.

Чтобы открыть файл, который требует имя пользователя и пароль при использовании функции fopen(), вставьте идентификационную информацию в URL, как показано ниже:

$fh = fopen('ftp://username:password@ftp.example.com/pub/Index','r');
$fh = fopen('http://username:password@www.example.com/robots.txt','r');

Открытие удаленных файлов с помощью функции fopen() реализуется за счет внутренней функциональности PHP, называемой URL fopen wrapper и представляющей собою оболочку для открытия удаленных файлов.


Она разрешена по умолчанию, но может быть выключена установкой параметра allow_url_fopen в off в файле php.ini или в файле конфигурации веб-сервера. Если не удается открыть удаленные файлы с помощью функции fopen(), проверьте эти настройки вашего сервера.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Блокировка файла
Выбор случайной строки из файла
Запись в несколько файловых дескрипторов одновременно
Запись в стандартный поток вывода
Непосредственная модификация файла без временной копии

Вернуться в раздел: PHP / 18. Файлы