Podręcznik PHP
Poprzedni |  | Następny

# Rozdział 19. Korzystanie ze zdalnych plików

Jeśli parametr `allow_url_fopen` w pliku `php.ini` zostanie włączony, będzie można używać adresów HTTP i FTP w większości funkcji, które jako parametr przyjmują nazwę pliku, włączając w to instrukcje include(), include_once(), require() oraz require_once(). Więcej informacji o protokołach obsługiwanych przez `PHP` znajduje się w Dodatek J.

> Notatka: `PHP` dla Windows, w wersji wcześniejszej niż 4.3 nie obsługiwało zdalnego dostępu do plików przy użyciu instrukcji: include(), include_once(), require() i require_once() oraz rodziny funkcji imagecreatefromXXX z rozszerzenia Materiały źródłowe XLI, Image functions.

Możesz wykorzystać tę własność aby otworzyć plik na zdalnym serwrze, przetworzyć jego zawartość i użyć wyników w zapytaniu do bazy danych, lub po prostu wyświetlić plik dostosowując jego wygląd do swojej strony.

Przykład 19-1. Pobieranie tytułu zdalnej strony
`<?php $file = fopen ("http://www.example.com/", "r"); if (!$file) { echo "<p>Nie można otworzyć zdalnego pliku.\n"; exit; } while (!feof ($file)) { $line = fgets ($file, 1024); /* Zadziała tylko wtedy, gdy tytuł i jego znaczniki są w tej samej linii */ if (eregi ("<title>(.*)</title>", $line, $out)) { $title = $out[1]; break; } } fclose($file); ?>`

Możesz również zapisywać pliki na serwerach FTP (zakładając, że połączyłeś się jako użytkownik z odpowiednimi prawami dostepu). Przy użyciu tej metody możesz jedynie tworzyć nowe pliki. Jeśli spróbujesz nadpisać istniejący plik, wywołanie funkcji fopen() zwróci błąd.

Przykład 19-2. Zapisywanie danych na zdalnym serwerze.
`<?php $file = fopen ("ftp://ftp.example.com/incoming/outputfile", "w"); if (!$file) { echo "<p>Nie można otworzyć zdalnego pliku do zapisu.\n"; exit; } /* Tutaj zapisujemy dane. */ fputs ($file, $_SERVER['HTTP_USER_AGENT'] . "\n"); fclose ($file); ?>`

> Notatka: Być może powyższy przykład nasunął ci pomysł, by użyć tej metody do zdalnego zapisywania logów. Niestety taka próba się nie powiedzie, gdyż wywołanie fopen() zwróci błąd, jeśli zdalny plik już istnieje. Aby zrealizować zdalne logowanie powinieneś przyjrzeć się funkcji syslog().

Poprzedni | Spis treści | Następny
PUT method support | Początek rozdziału | Obsługa połączeń