Fonction fopen() PHP
Définition et utilisation
La fonction fopen() ouvre un fichier ou une URL.
Si l'ouverture échoue, cette fonction renvoie FALSE.
Syntaxe
fopen(nom de fichier,mode,include_path,contexte)
Paramètres | Description |
---|---|
nom de fichier | Obligatoire. Définir le fichier ou l'URL à ouvrir. |
mode | Obligatoire. Définir le type d'accès requis au fichier ou au flux. Les valeurs possibles sont indiquées dans le tableau suivant. |
include_path | Optionnel. Si vous avez également besoin de rechercher des fichiers dans include_path, vous pouvez définir ce paramètre sur 1 ou TRUE. |
contexte | Optionnel. Définir l'environnement du descripteur de fichier. Le contexte est un ensemble d'options qui peuvent modifier le comportement du flux. |
Valeurs possibles du paramètre mode
mode | cette option est prise en charge par PHP 4.3.2 et les versions ultérieures, et ne peut être utilisée que pour les fichiers locaux. |
---|---|
"r" | Ouvrir en mode lecture seule, déplacer le pointeur de fichier vers le début du fichier. |
"r+" | Ouvrir en mode lecture-écriture, déplacer le pointeur de fichier vers le début du fichier. |
"w" | Ouvrir en mode écriture, déplacer le pointeur de fichier vers le début du fichier et couper la taille du fichier à zéro. Si le fichier n'existe pas, il essaie de le créer. |
"w+" | Ouvrir en mode lecture-écriture, déplacer le pointeur de fichier vers le début du fichier et couper la taille du fichier à zéro. Si le fichier n'existe pas, il essaie de le créer. |
"a" | Ouvrir en mode écriture, déplacer le pointeur de fichier vers la fin du fichier. Si le fichier n'existe pas, il essaie de le créer. |
"a+" | Ouvrir en mode lecture-écriture, déplacer le pointeur de fichier vers la fin du fichier. Si le fichier n'existe pas, il essaie de le créer. |
"x" |
Ouvrir et créer le fichier en mode écriture, déplacer le pointeur de fichier vers le début du fichier. Si le fichier existe déjà, l'appel à fopen() échoue et renvoie FALSE, et génère un message d'erreur de niveau E_WARNING. Si le fichier n'existe pas, il essaie de le créer. créer et ouvrir en lecture-écriture, le pointeur de fichier est mis à la tête du fichier. Si le fichier existe, l'appel fopen() échoue et retourne FALSE, et génère un message d'erreur de niveau E_WARNING. Si le fichier n'existe pas, il essaie de le créer. c'est équivalent à indiquer les marqueurs O_EXCL|O_CREAT à l'appel système open(2) de bas niveau. |
"x+" |
"x+" créer et ouvrir en lecture-écriture, le pointeur de fichier est mis à la tête du fichier. Si le fichier existe, l'appel fopen() échoue et retourne FALSE, et génère un message d'erreur de niveau E_WARNING. Si le fichier n'existe pas, il essaie de le créer. c'est équivalent à indiquer les marqueurs O_EXCL|O_CREAT à l'appel système open(2) de bas niveau. |
cette option est prise en charge par PHP 4.3.2 et les versions ultérieures, et ne peut être utilisée que pour les fichiers locaux.
décrit nom de fichier fopen() va nom de fichier spécifie le nom de la ressource lié à un flux. Siest "si le format "" est utilisé, il est traité comme une URL, PHP cherchera un gestionnaire de protocole (également appelé protocole encapsulé) pour traiter ce modèle. Si le protocole n'est pas encore enregistré comme protocole encapsulé, PHP émettra un message pour aider à vérifier les problèmes potentiels dans le script et nom de fichier pour continuer en tant que nom de fichier ordinaire.
si PHP pense que nom de fichier spécifie un fichier local, il tentera d'ouvrir un flux sur ce fichier. Ce fichier doit être accessible par PHP, donc il faut confirmer que les permissions d'accès au fichier permettent cet accès. Si le mode sécurisé ou open_basedir est activé, des restrictions supplémentaires seront appliquées.
si PHP pense que nom de fichier spécifie une protocole enregistré, et ce protocole est enregistré comme une URL réseau, PHP vérifiera et confirmera que allow_url_fopen a été activé. Si désactivé, PHP émettra un avertissement et l'appel fopen échouera.
pour contexte le soutien a été ajouté dans PHP 5.0.0.
Avis et commentaires
Remarque :Les systèmes d'exploitation familiaux différents ont des habitudes de fin de ligne différentes. Lors de l'écriture d'un fichier texte et de l'insertion d'une nouvelle ligne, il faut utiliser le symbole de fin de ligne conforme au système d'exploitation. Les systèmes basés sur Unix utilisent \n comme symbole de fin de ligne, les systèmes basés sur Windows utilisent \r\n comme symbole de fin de ligne, et les systèmes basés sur Macintosh utilisent \r comme symbole de fin de ligne. Si le symbole de fin de ligne incorrect est utilisé lors de l'écriture dans un fichier, d'autres applications peuvent s'ouvrir de manière bizarre lorsque ces fichiers sont ouverts.
Windows fournit un marqueur de conversion de texte ("t") qui convertit transparentement \n en \r\n. En correspondance, "b" peut être utilisé pour forcer le mode binaire, ce qui empêche la conversion des données. Pour utiliser ces marqueurs, il faut soit utiliser "b" ou "t" comme dernier caractère du paramètre mode.
Le mode de conversion par défaut dépend du SAPI et de la version de PHP utilisée, donc pour faciliter la portabilité, il est recommandé de toujours spécifier le bon marqueur. Si vous travaillez avec des fichiers texte purs et que vous utilisez \n comme symbole de fin de ligne dans le script, mais que vous espérez que ces fichiers puissent être lus par d'autres applications telles que Notepad, utilisez "t" dans le mode. Dans tous les autres cas, utilisez "b".
Lors de l'opération de fichiers binaires sans spécifier le marqueur "b", vous pourriez rencontrer des problèmes étranges, y compris des fichiers d'images corrompus et des problèmes étranges concernant les caractères \r\n.
Remarque :Pour des raisons de portabilité, il est fortement recommandé d'utiliser toujours le marqueur "b" lors de l'ouverture de fichiers avec fopen().
Remarque :Encore une fois, pour des raisons de portabilité, il est fortement recommandé de réécrire le code qui dépend du "t" modèle pour qu'il utilise le bon symbole de fin de ligne et change en "b" modèle.
Exemple
<?php $file = fopen("test.txt","r"); $file = fopen("/home/test/test.txt","r"); $file = fopen("/home/test/test.gif","wb"); $file = fopen("http://www.example.com/","r"); $file = fopen("ftp://user:password@example.com/test.txt","w"); ?>