Távoli állományok kezelése
Amennyiben az allow_url_fopen be van kapcsolva a php.ini-ben, HTTP és FTP URL-eket lehet paraméterként átadni majdnem minden olyan függvénynek, amelyek fájlnevet kér paraméterül, beleértve az include(), include_once(), require() és require_once() utasÃtásokat is. További információkért a használható protokollokkal kapcsolatban nézz el ide: List of Supported Protocols/Wrappers.
Note: PHP 4.0.3 és régebbi verziókban az ilyen URL-ek értelmezéséhez szükséges a --enable-url-fopen-wrapper beállÃtás bekapcsolása.
Note: A Windows-os, 4.3 előtti változatok PHP nem támogatják a távoli állományelérést a következő függvények esetén: include(), include_once(), require() és require_once(), valamint az imagecreatefromXXX függvények esetén. Ezekről többet: Grafika
Ezt a lehetÅ‘séget lehet használni például egy távoli webszerveren lévÅ‘ fájlt megnyitására, majd a kÃvánt adatok kigyűjtésére, vagy arra, hogy csak egyszerűen a saját oldalad kinézetével, stÃlusával tálald.
Example#1 Egy távoli weboldal cÃmsorának megállapÃtása
<?php
$file = fopen( "https://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 egy FTP szerveren tárolt fájlba Ãrásra is, feltéve, hogy megfelelÅ‘ jogokkal rendelkezÅ‘ user-ként lépsz be. Ezzel a módszerrel csak új fájlok hozhatók létre, ha már létezik a megadott nevű állomány akkor a fopen() hÃvása sikertelen lesz. Ha nem 'anonymous' felhasználóként szeretnél belépni, a felhasználói nevet és jelszót az URL részeként kell megadni a alábbi formában: 'ftp://felhasznalo:jelszo@ftp.pelda.hu/eleresi/ut/alma.txt'. (Ugyanezt a módszert használható akkor is, ha olyan állományokat kell elérni HTTP-n keresztül, amelyek a Basic azonosÃtást igénylik.)
Example#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 */
fwrite( $file, "$_SERVER['HTTP_USER_AGENT']\n" );
fclose( $file );
?>
Note: A fenti példa alapján talán azt hihetnénk, hogy ilyen technikát kell használni például távoli naplózáshoz. Sajnálatos módon azonban ez nem működik, mert a fopen() hÃvása sikertelen lesz, ha a távoli állomány már létezik. Az ehhez hasonló elosztott, távoli naplózáshoz a syslog() függvény szolgáltatásait kell igénybe venni.