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

Amennyiben az "URL fopen wrapper" támogatás a configure futtatásakor be volt állítva (azaz nem adtad meg konkrétan a --disable-url-fopen-wrapper flag-et a configure-nak), használhatsz HTTP és FTP URL-eket majdnem minden olyan függvénnyel, ami filenevet kér paraméterül, beleértve a require()-t és az include()-ot.

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

Például használhatod ezt a funkciót arra, hogy egy távoli webszerveren lévő file-t 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 19-1. Egy távoli weboldal címsorának megállapítása

  1 
  2 
  3 <?php
  4 $file = fopen ("http://www.php.net/", "r");
  5 if (!$file) {
  6     echo "<p>Nem lehet megnyitni a külső file-t!\n";
  7     exit;
  8 }
  9 while (!feof ($file)) {
 10   $line = fgets ($file, 1024);
 11   /* Ez csak akkor jó, ha a cím és a körbezáró tag-ek egy sorban vannak */
 12   if (eregi ("<title>(.*)</title>", $line, $out)) {
 13       $title = $out[1];
 14       break;
 15   }
 16 }
 17 fclose($file);
 18 ?>
 19 
 20     

Lehetőség van arra is, hogy egy FTP szerveren file-ba írj, feltéve, hogy megfelelő jogokkal rendelkező user-ként lépsz be, és a file 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/file'. (Ugyanezt a módszert használhatod akkor is, ha olyan file-okat szeretnél elérni HTTP-vel, amik a Basic azonosítást igénylik.)

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

  1 
  2 
  3 <?php
  4 $file = fopen ("ftp://ftp.php.net/incoming/outputfile", "w");
  5 if (!$file) {
  6     echo "<p>Nem lehet megnyitni a külső file-t írásra.\n";
  7     exit;
  8 }
  9 /* Itt írunk a file-ba */
 10 fputs ($file, "$HTTP_USER_AGENT\n");
 11 fclose ($file);
 12 ?>
 13 
 14     

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ő file-okba való írásra alkalmas. Egy sokkal célzottab megoldás a távoli naplózásra a syslog() függvény használata.