Chapitre 19. Utilisation des fichiers à distance

Aussi longtemps que le support de la fonction d' ouverture générique de fichiers ("URL fopen wrapper" ) est actif lorsque vous configurez PHP (il est inutile de passer explicitement l'option --disable-url-fopen-wrapper pour faire la configuration) , vous pouvez utiliser des URLs (HTTP et FTP ) avec la majorité des fonctions qui utilisent un nom de fichier comme paramètre , ceci incluant les expressions require( ) et include( ) .

Vous ne pouvez pas utiliser les fichiers distants dans les expressions include( ) et require( ) sous Windows .



Par exemple , vous pouvez suivre l' exemple suivant pour ouvrir un fichier sur un serveur web distant , analyser les résultats pour extraire les informations dont vous avez besoin , et ensuite l 'utiliser dans une requête de base de données , ou simplement éditer les informations dans le style de votre site .

Exemple 19-1 . Connaître le titre d ' une page distante

 
?php

 
$file

 
=

 
fopen(

 
"http

 
:

 
/

 
/www.php.net

 
/

 
"

 
,

 
"r")

 
;

 
if

 
(!$file

 
)

 
{

 
echo

 
"

 
p

 
Impossible

 
d'ouvrir

 
le

 
fichier

 
distant.\n"

 
;

 
exit

 
;

 
  }

 
while

 
(!feof($file)

 
)

 
{

 
$line

 
=

 
fgets($file

 
,

 
1024)

 
;

 
/

 
*

 
Cela

 
ne

 
fonctionne

 
que

 
si

 
le

 
titre

 
est

 
écrit

 
sur

 
une

 
ligne.*

 
/

 
if

 
(eregi(

 
"

 
title

 
(.*

 
)

 
/

 
title

 
"

 
,

 
$line

 
,

 
$out)

 
)

 
{

 
$title

 
=

 
$out[1]

 
;

 
break

 
;

 
    }

 
  }

 
fclose($file)

 
;

 
?





Vous pouvez aussi écrire des fichiers sur un serveur FTP aussi longtemps que vous êtes connecté avec un utilisateur ayant les bons droits d' accès , alors que le fichier n 'existait pas encore . Pour vous connecter avec un utilisateur autre qu' anonyme , vous devez spécifier un nom d'utilisateur (et certainement le mot de passe ) dans l'URL , comme par exemple 'ftp : / /user:password@ftp.example.com / path / to / file' . (Vous pouvez utiliser le même type de syntaxe pour accéder aux fichiers via HTTP lorsqu'ils nécessitent une authentification basique ) .

Exemple 19-2 . Stocker des données sur un serveur distant

 
?php

 
$file

 
=

 
fopen(

 
"ftp

 
:

 
/

 
/ftp.php.net

 
/

 
incoming

 
/

 
outputfile"

 
,

 
"w")

 
;

 
if

 
(!$file

 
)

 
{

 
echo

 
"

 
p

 
Impossible

 
d'ouvrir

 
un

 
fichier

 
distant

 
en

 
écriture.\n"

 
;

 
exit

 
;

 
  }

 
/

 
*

 
Ecriture

 
des

 
données

 
.

 
*

 
/

 
fputs($file

 
,

 
"$HTTP_USER_AGENT\n")

 
;

 
fclose($file)

 
;

 
?



Remarque : Vous pouvez avoir l' idée,à partir de l'exemple ci-dessus , d'utiliser la même technique pour écrire sur un log distant , mais comme mentionné ci-dessus vous ne pouvez qu'écrire sur un nouveau fichier en utilisant les fonctions fopen( ) Vous pouvez avoir l'idée,à partir de l'exemple ci-dessus , d'utiliser la même technique pour écrire sur un log distant , mais comme mentionné ci-dessus vous ne pouvez qu'écrire sur un nouveau fichier en utilisant les fonctions fopen( ) avec une URL . Pour faire des log distribués , nous vous conseillons de regarder la partie syslog( ) .