fopenOuvre un fichier ou une URL
&reftitle.description;
resourcefalsefopenstringfilenamestringmodebooluse_include_path&false;resourcenullcontext&null;fopen crée une ressource nommée, spécifiée par
le paramètre filename, sous la forme d'un flux.
&reftitle.parameters;
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
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.
La liste des protocoles supportés est disponible sur .
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 antislashs
utilisés dans le chemin du fichier, ou bien utilisez des slashs.
]]>
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 modemodeDescription'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 ; le comportement est
le même que pour 'w'.
'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. Dans ce mode, la fonction fseek
n'a aucun effet, les écritures surviennent toujours.
'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. Dans ce mode, la fonction fseek
n'affecte que la position de lecture, les écritures surviennent
toujours.
'x'
Crée et ouvre le fichier en écriture seulement ; 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.
'x+'
Crée et ouvre le fichier pour lecture et écriture ; le comportement est
le même que pour 'x'.
'c'
Ouvre le fichier pour écriture seulement. Si le fichier n'existe pas, il
sera créé, s'il existe, il n'est pas tronqué (contrairement à
'w') et l'appel à la fonction n'échoue pas (comme dans
le cas de 'x'). Le pointeur du fichier est positionné
au début. Ce mode peut être utile pour obtenir un verrou (voyez
flock) avant de tenter de modifier le fichier, utiliser
'w' pourrait tronquer le fichier avant d'obtenir le verrou
(vous pouvez toujours tronquer grâce à ftruncate).
'c+'
Ouvre le fichier pour lecture et écriture, le comportement est le même
que pour le mode 'c'.
'e'
Défini l'indicateur close-on-exec sur le descripteur de fichier
ouvert. Disponible uniquement en PHP compilé sur les systèmes
conforme POSIX.1-2008.
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 (Mac OS Classic) 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 à ê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 est 'b'.
Vous pouvez 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 les anciennes versions
de Notepad. Vous devriez toujours utiliser l'option 'b'
dans les autres cas.
Si vous spécifiez 't' 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.
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'.
Le mode est ignoré pour les enveloppes de flux
php://output, php://input,
php://stdin, php://stdout,
php://stderr et php://fd.
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
¬e.context-support;
&reftitle.returnvalues;
Retourne une ressource représentant le pointeur de fichier,
&return.falseforfailure;
&reftitle.errors;
&fs.emits.warning.on.failure;
&reftitle.changelog;
&Version;&Description;7.0.16, 7.1.2
L'option 'e' a été ajoutée.
&reftitle.examples;
Exemple avec fopen
]]>
&reftitle.notes;
&warn.ssl-non-standard;
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.
Cette fonction peut également réussir lorsque filename
est un dossier. Si vous avez un doute sur le fait que
filename soit un fichier ou un dossier, vous pouvez
utiliser la fonction is_dir avant d'utiliser la fonction
fopen.
&reftitle.seealso;
fclosefgetsfreadfwritefsockopenfilefile_existsis_readablestream_set_timeoutpopenstream_context_createumaskSplFileObject