21. Fejezet. Távoli file-ok kezelése

Amennyiben az "URL fopen wrapper" támogatás be volt állítva használhatsz HTTP és FTP URL-eket majdnem minden olyan függvénnyel, ami fájlnevet kér paraméterül, beleértve a require()-t és az include()-ot is. Az "URL fopen wrapper" támogatás a PHP 4.0.3-as és korábbi verzióiban be van állítva, ha nem adtad meg a configure futtatásakor a --disable-url-fopen-wrapper paramétert. Későbbi verziókban ezt a szolgáltatást az allow_url_fopen php.ini beállítás szabályozza.

Megjegyzés: Nem adhatsz meg távoli file-okat az include() és a require() használatakor Windows alatt!

Használhatod például ezt a funkciót arra, hogy egy távoli webszerveren lévő fájlt megnyiss, majd feldolgozd a kívánt adatokat, és felhasználd egy adatbázis lekérdezésben, vagy csak egyszerűen a saját site-od kinézetével, stílusával tálald.

Példa 21-1. Egy távoli weboldal címsorának megállapítása

<?php
$file = fopen ("http://www.example.com/", "r");
if (!$file) {
    echo "<p>Nem lehet megnyitni a külső file-t!\n";
    exit;
}
while (!feof ($file)) {
  $line = fgets ($file, 1024);
  /* Ez csak akkor jó, ha a cím és a körbezáró tag-ek egy sorban vannak */
  if (eregi ("<title>(.*)</title>", $line, $out)) {
      $title = $out[1];
      break;
  }
}
fclose($file);
?>

Lehetőség van arra is, hogy egy FTP szerveren fájlba írj, feltéve, hogy megfelelő jogokkal rendelkező user-ként lépsz be, és a fájl még nem létezik. Ha nem 'anonymous' user-ként szeretnél belépni, a usernevet és jelszót az URL részeként kell megadnod a alábbi formában: 'ftp://user:jelszo@ftp.pelda.hu/eleresi/ut/alma.txt'. (Ugyanezt a módszert használhatod akkor is, ha olyan fájlokat szeretnél elérni HTTP-vel, amik a Basic azonosítást igénylik.)

Példa 21-2. Adat tárolása távoli gépen

<?php
$file = fopen ("ftp://ftp.example.com/incoming/outputfile", "w");
if (!$file) {
    echo "<p>Nem lehet megnyitni a külső file-t írásra.\n";
    exit;
}
/* Itt írunk a file-ba */
fputs ($file, "$HTTP_USER_AGENT\n");
fclose ($file);
?>

Megjegyzés: A fenti példa alapján már látható, hogy milyen technikát kell haszálni ha például távoli naplózást szeretnél alkalmazni, de mint fent is olvashattad, ez a technika csak nemlétező fájlokba való írásra alkalmas. Egy sokkal célzottab megoldás a távoli naplózásra a syslog() függvény használata.