fopen

(PHP 4, PHP 5)

fopenOuvre un fichier ou une URL

Description

resource fopen ( string $filename , string $mode [, bool $use_include_path= false [, resource $context ]] )

fopen() cr�e une ressource nomm�e, sp�cifi�e par le param�tre filename , sous la forme d'un flux.

Liste de param�tres

filename

Si filename est de la forme "protocole://", filename est suppos� �tre une URL, et PHP va rechercher un gestionnaire de protocole adapt� pour lire ce fichier. Si aucun gestionnaire pour ce protocole n'est disponible, PHP va �mettre une alerte qui vous permettra de savoir que vous avez des probl�mes dans votre script, et il tentera d'exploiter filename comme un fichier classique.

Si PHP d�cide que le fichier filename est un fichier local, il va essayer d'ouvrir un flux avec ce fichier. Le fichier doit �tre accessible � PHP. Il vous faut donc vous assurer que vous avez les droits d'acc�s � ce fichier. Si vous activez le safe mode, ou la directive open_basedir, d'autres conditions peuvent aussi s'appliquer.

Si PHP a d�cid� que filename sp�cifie un protocole enregistr�, et que ce protocole est enregistr� comme un protocole r�seau, PHP s'assurera que la directive allow_url_fopen est activ�e. Si elle est inactive, PHP va �mettre une alerte et l'ouverture va �chouer.

Note: La liste des protocoles support�s est disponible sur Liste des protocoles support�s. Certains protocoles (appel�s aussi wrappers ou gestionnaires) supportent des context et/ou des options dans le fichier php.ini. R�f�rez-vous aux pages du manuel traitant le protocole, pour conna�tre la liste des options qui sont disponibles. ( e.g. l'option de php.ini user_agent est utilis�e par le gestionnaire http).

Sous Windows, assurez-vous de bien prot�ger les antislash utilis�s dans le chemin du fichier, ou bien utilisez des slashs.

<?php
$handle 
fopen("c:\\data\\info.txt""r");
?>

mode

Le param�tre mode sp�cifie le type d'acc�s d�sir� au flux. Il peut prendre les valeurs suivantes :

Liste des modes possibles pour la fonction fopen() en utilisant le param�tre mode
mode Description
'r' Ouvre en lecture seule, et place le pointeur de fichier au d�but du fichier.
'r+' Ouvre en lecture et �criture, et place le pointeur de fichier au d�but du fichier.
'w' Ouvre en �criture seule ; place le pointeur de fichier au d�but du fichier et r�duit la taille du fichier � 0. Si le fichier n'existe pas, on tente de le cr�er.
'w+' Ouvre en lecture et �criture ; place le pointeur de fichier au d�but du fichier et r�duit la taille du fichier � 0. Si le fichier n'existe pas, on tente de le cr�er.
'a' Ouvre en �criture seule ; place le pointeur de fichier � la fin du fichier. Si le fichier n'existe pas, on tente de le cr�er.
'a+' Ouvre en lecture et �criture ; place le pointeur de fichier � la fin du fichier. Si le fichier n'existe pas, on tente de le cr�er.
'x' Cr�e et ouvre le fichier en lecture seule ; place le pointeur de fichier au d�but du fichier. Si le fichier existe d�j�, fopen() va �chouer, en retournant FALSE et en g�n�rant une erreur de niveau E_WARNING. Si le fichier n'existe pas, fopen() tente de le cr�er. Ce mode est l'�quivalent des options O_EXCL|O_CREAT pour l'appel syst�me open(2) sous-jacent. Cette option est support�e � partir de PHP 4.3.2 et fonctionne uniquement avec des fichiers locaux.
'x+' Cr�e et ouvre le fichier en lecture et �criture ; place le pointeur de fichier au d�but du fichier. Si le fichier existe d�j�, fopen() va �chouer, en retournant FALSE et en g�n�rant une erreur de niveau E_WARNING. Si le fichier n'existe pas, fopen() tente de le cr�er. Ce mode est l'�quivalent des options O_EXCL|O_CREAT pour l'appel syst�me open(2) sous-jacent. Cette option est support�e � partir de PHP 4.3.2, et fonctionne uniquement avec des fichiers locaux.

Note: Les syst�mes d'exploitation utilisent diff�rents caract�res pour les nouvelles lignes. Lorsque vous �crivez un fichier texte, et ins�rez une nouvelle ligne, vous devez utiliser le bon caract�re pour votre syst�me d'exploitation. Les syst�mes Unix utilisent \n comme nouvelle ligne, les syst�mes Windows utilisent \r\n, et les syst�mes Macintosh utilisent \r.
Si vous n'utilisez pas le bon caract�re de nouvelle ligne lors de l'�criture de vos fichiers, vous risquez d'ouvrir vos fichiers avec des applications qui donneront un aspect 'bizarre' au texte.
Windows propose un mode de traduction ('t'), qui va traduire automatiquement les caract�res \n en \r\n lorsque vous travaillez sur le fichier. � l'inverse, vous pouvez utiliser l'option 'b' pour forcer le fichier a �tre �crit en mode binaire, sans traduction des donn�es. Pour utiliser ces options, ajoutez 'b' ou 't' comme dernier caract�re du param�tre mode .
Le mode de traduction par d�faut d�pend de l'interface SAPI et de la version de PHP que vous utilisez. Nous vous recommandons de toujours sp�cifier les options de traductions pour des raisons de portabilit�. Vous devriez utiliser 't' lorsque vous �crivez des fichiers de texte, et le caract�re \n pour d�finir vos fin de ligne, dans les scripts, mais que vous vous attendez � ce que le fichier soit relu par une application comme Notepad. Vous devriez toujours utiliser l'option 'b' dans les autres cas.
Si vous ne pr�cisez pas 'b' lorsque vous travaillez avec des fichiers binaires, vous pourriez rencontrer des probl�mes avec vos donn�es, comme des images corrompues ou des caract�res \r\n inopin�s.

Note: Pour des raisons de portabilit�, il est recommand� de toujours utiliser l'option 'b' lorsque vous ouvrez des fichiers avec fopen().

Note: � nouveau, pour des raisons de portabilit�, il est fortement recommand� de r��crire les scripts qui utilisent l'option 't', pour qu'ils utilisent le bon caract�re de nouvelle ligne, et le mode 'b'.

use_include_path

Le troisi�me param�tre optionnel use_include_path peut �tre d�fini � 1 ou � TRUE pour chercher le fichier dans l'include_path.

context

Note: Le support de contexte a �t� ajout� en PHP 5.0.0. Pour une description des contextes, r�f�rez-vous � Fonctions sur les flux.

Valeurs de retour

Retourne une ressource repr�sentant le pointeur de fichier, ou FALSE si une erreur survient.

Erreurs / Exceptions

Si l'ouverture �choue, la fonction retourne FALSE et une alerte E_WARNING sera g�n�r�e. Vous pouvez utiliser le caract�re @ pour supprimer cette alerte.

Historique

Version Description
4.3.2 Depuis PHP 4.3.2, le mode par d�faut est le mode binaire pour toutes les plates-formes qui font la distinction entre les modes binaire et texte. Si vous rencontrez des probl�mes dans vos scripts apr�s une mise � jour, essayez d'utiliser le flag 't' en attendant que vous rendiez votre script plus portable comme mentionn� ci-dessous.
4.3.2 Les options 'x' et 'x+'ont �t� ajout�s.

Exemples

Exemple #1 Exemple avec fopen()

<?php
$handle 
fopen("/home/rasmus/file.txt""r");
$handle fopen("/home/rasmus/file.gif""wb");
$handle fopen("http://www.example.com/""r");
$handle fopen("ftp://user:[email protected]/somefile.txt""w");
?>

Notes

Avertissement

Lorsque vous utilisez SSL, le serveur IIS de Microsoft violera le protocole en fermant la connexion sans envoyer l'indicateur close_notify. PHP le reportera en tant que "SSL: Fatal Protocol Error" quand vous arrivez � la fin des donn�es. L'astuce est de baisser le niveau de la directive error_reporting pour ne pas inclure les alertes. � partir de PHP 4.3.7, le bogue est d�tect� automatiquement lors de l'ouverture du flux en utilisant https:// et supprimera cet avertissement pour vous. Si vous utilisez fsockopen() pour cr�er une socket ssl://, vous devez vous occuper vous-m�me de supprimer l'erreur.

Note: Lorsque le safe-mode est activ�, PHP v�rifie si le fichier/dossier que vous allez utiliser a le m�me UID que le script qui est actuellement ex�cut�.

Si vous rencontrez des probl�mes en lecture ou �criture de fichier et que vous utilisez PHP en version module de serveur, n'oubliez pas que les fichiers auxquels vous acc�dez ne sont pas n�cessairement accessibles au processus serveur.

Voir aussi