 |
Если
поддержка "URL fopen-оболочки/wrapper" включена при конфигурировании PHP (если
вы только не передали явным образом флаг --disable-url-fopen-wrapper
для конфигурирования (для версий, новее 4.0.3) или не установили allow_url_fopen
в off в файле php.ini (для более новых версий)), вы можете использовать
HTTP и FTP- URL'ы с большинством функций, которые принимают filename/имя файла
в качестве параметра, в том числе - операторы require()
и include(). Примечание:
Windows-версия PHP в настоящее время не поддерживает удалённый доступ
к файлам для следующих функций: include(),
include_once(), require() require_once().
Например,
вы можете использовать это для того, чтобы открыть файл на удалённом web-сервере,
разобрать вывод данных, а затем использовать эти данные в запросе к БД или просто
вывести их в стиле вашего web-сайта.
Пример 20-1. Получение названия/title удалённой страницы
<?php $file = fopen ("http://www.example.com/", "r"); if (!$file)
{ echo "<p>Unable to open remote file.\n"; exit; } while (!feof ($file))
{ $line = fgets ($file, 1024); /* Это будет работать, только если title и его
тэги расположены в одной строчке */ if (eregi ("<title>(.*)</title>",
$line, $out)) { $title = $out[1]; break; } } fclose($file); ?> | |
Вы
можете также записывать в файлы по FTP, если соединены как пользователь с корректными
правами доступа и если файл ещё не существует. Для соединения как любой пользователь,
кроме 'anonymous', вам необходимо специфицировать username (и, возможно, password)
в URL, как, например: 'ftp://user:password@ftp.example.com/path/to/file'. (Вы
можете использовать тот же синтаксис для доступа к файлам по HTTP, если необходима
Basic-аутентификация.) Пример
20-2. Сохранение данных на удалённом сервере<?php
$file = fopen ("ftp://ftp.example.com/incoming/outputfile", "w"); if (!$file)
{ echo "<p>Unable to open remote file for writing.\n"; exit; } /* Здесь
записываются данные. */ fputs ($file, $_SERVER['HTTP_USER_AGENT'] . "\n"); fclose
($file); ?> |
|
Примечание:
из этого примера у вас может возникнуть идея использовать эту технику для
записи в удалённый log, но, как указано выше, вы можете записывать только в новый
файл с использованием оболочек URL fopen(). Для выполнения распределённого логинга,
вроде этого, вы должны просмотретьsyslog().
|  |