Gestion de fichiers
Le PHP permet de lire, écrire et de créer des fichiers. Ces fichiers sont généralement des fichiers txt.
Dans ce chapitre, nous détaillerons l'utilisation des différentes instructions que possède le PHP à ce propos.
Le "f" du début des instructions signifie "file" (fichier). Ainsi, fopen() signigier file open. Mais à quoi sert d'ouvrir un fichier pour écrire dedans? Ca peut être intéressant pour noter une phrase ou un nombre dans ce fichier à chaque fois qu'un visiteur vient sur votre page. Par exemple, réaliser un compteur rudimentaire!
Voici la liste des instructions les plus importantes:
- fopen()
- fclose()
- fgets()
- fputs()
- file()
fopen()
fopen() permet d'ouvrir un fichier pour y travailler. Attention, vous ne verrez pas qu'il s'ouvre. C'est seulement le système qui va l'ouvrir et écrire dedans! Sa syntaxe est:
$variable fopen(fichier, mode);
fichier est bien entendu le nom du fichier et mode est le mode d'ouverture.
Quels sont les différents modes d'ouverture?
En voici la liste:
| r | lecture |
| w | écriture (crée le fichier s'il n'existe pas). |
| a | écriture et ajout du contenue A LA FIN du fichier (crée le fichier s'il n'existe pas) |
| r+ | lecture et écriture |
| w+ | lecture, écriture et crée le fichier s'il n'existe pas |
| a+ | lecture, écriture, ajout du contenu à la fin et crée le fichier s'il n'existe pas |
Voici quelques exemples pour que vous compreniez mieux:
Ouverture d'un fichier en mode lecture:
$fp=fopen("fichier.txt","r");
fclose()
Tout fichier ouvert doit bien entendu être refermé. C'est à cela que va servir fclose(). La syntaxe de fclose()
est la suivante:
fclose($variable);
Voici un exemple complet:
$texte=fopen("monfichier.txt","r");
fclose($texte);
L'exemple ci-dessus ne fera qu'ouvrir et fermer immédiatement le fichier "monfichier.txt".
fputs()
fputs() permet d'écrire dans un fichier. Sa syntaxe est:
fputs($variable,"texte");
Voici un exemple qui va écrire "J'adore le site theprogrammeur" dans un fichier TXT qu'il créera automatiquement.
<?php
$texte=fopen("fichier.txt","w");
fputs($texte,"J'adore le site theprogrammeur");
fclose($texte);
?>
Vous pouvez aller voir dans votre répertoire. Il y aura maintenant un fichier nommé "fichier.txt" qui contiendra
la phrase: "J'adore le site theprogrammeur". Grâce à cela, vous pourrez, par exemple, faire un livre d'or
rudimentaire!.
fgets();
La fonction fgets(); permet de récupérer un certaint nombre de caractères d'une ligne d'un fichier. Sa syntaxe
est la suivante:
$ma_variable=fgets(variable, nbre de caractères);
nbre de caractères est le nombre de caractères que fgets(); doit récupérer sur la ligne.
Comme d'habitude, voici un exemple pour vous aider à comprendre. On aura préalablement créé un fichier txt nommé
"fichier.txt" qui contiendra la phrase suivante:" Arrête ! Ecoute-moi, voyageur. Si tes pas te portent vers
Gypsèle et les rives de l'Hèbre, cherche le vieil Hyllos et dis-lui qu'il célèbre un long deuil pour le fils
qu'il ne reverra pas !"
$theprogrammeur=fopen("fichier.txt","r");
$ligne=fgets($theprogrammeur,15);
echo $ligne;
Voici ce qui s'affichera à l'écran:

La fonction fgets(); n'a pris que les 15 premiers caractères de la première ligne de notre fichier.
file();
file(); est une fonction qui remplace fopen() et fgets();. file(); permet d'afficher le contenu du fichier dans
un tableau. Voici sa syntaxe:
Tableau file(fichier);
Comme toujours, voici un exemple: (on réutilise le même "fichier.txt" que dans l'exemple précédent)
$fichier="fichier.txt";
//Condition pour tester si le fichier existe!
if(is_file($fichier)){
if($tableau=file($fichier)){
//boucle qui va parcourir tout le fichier pour afficher son contenu dans un tableau
for($i=0;$i<count($tableau);$i++)
echo $tableau[$i];
}
//Si on a pas trouvé le fichier...
else{
echo"Erreur lors de l'exécution du script!";
}
}
Voici ce qui s'affichera dans votre navigateur:

Pour afficher tout le contenu d'un fichier, vous pouvez aussi utilier fgets + while + feof(), qui vérifie
si on a atteint la fin du fichier. Pour afficher tout le contenu d'un fichier, vous utiliserez donc ce code:
$open = fopen("file.txt", "r");
$fichier = '';
while(!feof($open)){
$fichier .= fgets($open,500);
}
echo $fichier;
fclose($open);
Avec !feof(.. on vérifie si on est au bout du fichier et avec fgets, on récupère les 500 premiers caractères
de la ligne (dur qu'il y en aie plus!).
Il existe encore d'autre fonctions pour "jouer" avec les fichiers mais je n'ai pas trouvé utile de les aborder
dans ce cours car vous n'en verrez normalement pas l'utilité.
Les CHMOD
Lorsque vous voulez écrire dans un fichier, il est probable que vous n'ayez pas l'autorisation de le faire. Il
va donc falloir aller modifier les autorisations du fichiers. Pour ce faire, une fois le fichier envoyé sur
internet, faites un clic droit sur le fichier et cliquez sur "Propriétés":

Vous arriverez ensuite sur un panneau ressemblant à ceci:

Vous allez devoir remplacer les 3 chiffres écrits par "777" pour
dire que tout les scripts peuvent l'ouvrir, le lire et écrire dedans. On vous demandera fréquemment dans des
scripts de "Faire un CHMOD 777" sur un fichier. Il suffira de changer les nombres. Il y a bien entendu des
numéros différents suivant les propriétés qu'à un fichier mais le chmod le plus fait est quand même le 777.