Kapitola 19. Použití vzdálených souborů
Pokud při konfiguraci PHP aktivujete podporu "URL fopen wrapper"
(standardně je zapnutá, ledaže pro configure explicitně zadáte
--disable-url-fopen-wrapper příznak (verze do 4.0.3),
nebo (u novějších verzí) nastavíte allow_url_fopen v
php.ini na off), můžete ve voláních většiny funkcí, které očekávají
jako argument název souboru (včetně require() a
include()) uvést HTTP nebo FTP URL.
Můžete například otevřít soubor na vzdáleném web serveru, vyseparovat z
výstupu data, která potřebujete, a tato data potom použít v dotazu na
databázi, nebo je prostě začlenit do výstupu stylem odpovídajícím zbytku
vaší web site.
Příklad 19-1. Získání názvu vzdálené stránky <?php
$file = fopen ("http://www.php.net/", "r");
if (!$file) {
echo "<p>Nelze otevřít vzdálený soubor.\n";
exit;
}
while (!feof ($file)) {
$line = fgets ($file, 1024);
/* Toto bude fungovat pouze pokud jsou tagy a název na jedné řádce */
if (eregi ("<title>(.*)</title>", $line, $out)) {
$title = $out[1];
break;
}
}
fclose($file);
?> |
|
Pokud se připojíte jako uživatel s dostatečnými právy, a daný soubor už
neexistuje, můžete data také ukládat po FTP. Pokud se chcete připojit jako
jiný uživatel než 'anonymous', musíte v URL udat uživatelské jméno (a
pravděpodobně i heslo), např.
'ftp://uzivatel:heslo@ftp.example.com/path/to/file'. (Pro přístup k souborům
přes HTTP, které vyžadují Basic authentication, můžete použít stejnou
syntaxi.)
Příklad 19-2. Uložení dat na vzdáleném serveru <?php
$file = fopen ("ftp://ftp.php.net/incoming/outputfile", "w");
if (!$file) {
echo "<p>Nelze otevřít vzdálený soubor pro zápis.\n";
exit;
}
/* Zapíšeme data. */
fputs ($file, "$HTTP_USER_AGENT\n");
fclose ($file);
?> |
|
Poznámka:
Z výše uvedeného příkladu by vás mohlo napadnout využít tuto techniku k
zápisu do vzdáleného logu, ale jak už bylo zmíněno výše, pomocí URL fopen()
wrapperu můžete zapisovat pouze do nového souboru. Pokud máte zájem o
distribuované logování, podívejte se na syslog().