Création, ouverture et fermeture d’un fichier en PHP
Sommaire
- 1- Objectifs
- 2- Présentation
- 3- Méthodes de création de fichier avec PHP
- 3.1- Utiliser la fonction
touch()
pour créer un fichier en php - 3.2- Utiliser la fonction
fwrite()
pour créer un fichier en php - 3.3- Utiliser la fonction
file_put_contents()
pour créer un fichier en php - 4- Méthodes d'ouverture d'un fichier avec PHP
- 4.1- Utiliser la fonction
fopen()
- 4.1.1- La syntaxe de la fonction
fopen()
: - 4.1.2- Les paramètres de la fonction
fopen()
- 4.1.3- Exemple d'utilisation de de la fonction
fopen()
: - 4.2- Utilisez la fonction
file()
pour lire les fichiers texte ligne par ligne en PHP - 4.2.1- Exemple d'utilisation :
- 5- Méthodes de fermeture d’un fichier en php
- 5.1- Utiliser la fonction
fclose()
pour fermer un fichier - 5.1.1- $id_file
- 5.2- Utiliser la fonction
feof()
- 6- Verrouillage du fichier
- 6.1- $id_file
- 6.2- int N
- 7- Applications
- 7.1- App-01
- 7.2- App-02
- 7.2.1- Cours PHP
Création, ouverture et fermeture d’un fichier en PHP
-
Objectifs
- Etre capable de travailler avec les différentes fonctions qui vont nous permettre de créer, lire, éditer, fermer ou encore de verrouiller des fichiers en PHP.
-
Présentation
- PHP propose bon nombre de fonction pour la manipulation des fichiers, qui va de son ouverture à l’écriture dans un fichier texte, ou de la lecture d’un fichier texte jusqu’à sa fermeture.
-
Méthodes de création de fichier avec PHP
- Il existe plusieurs méthodes pour créer un fichier avec PHP. Voici quelques exemples :
- La fonction
fopen()
: cette fonction permet de créer un fichier en spécifiant le nom et le mode d’ouverture (lecture, écriture, etc.). Exemple :$file = fopen("nom_du_fichier.txt", "w");
- La fonction
touch()
: cette fonction permet de créer un fichier vide en spécifiant son nom. Exemple :touch("nom_du_fichier.txt");
- La fonction
fwrite()
: cette fonction permet de créer un fichier en écrivant des données dans celui-ci après l’avoir ouvert avec la fonction fopen(). Exemple :fwrite($file, "Contenu du fichier");
- La fonction
file_put_contents()
: cette fonction permet d’écrire des données dans un fichier existant ou de créer un fichier s’il n’existe pas encore. Exemple :file_put_contents("nom_du_fichier.txt", "Contenu du fichier", FILE_APPEND);
-
Utiliser la fonction
touch()
pour créer un fichier en php - La fonction
touch()
permet de créer un nouveau fichier en PHP. Elle prend en paramètre le nom et l’emplacement du fichier à créer. Si le fichier existe déjà, la fonction mettra à jour la date de dernière modification du fichier. Cette fonction est utile pour créer des fichiers de log, des fichiers de configuration, des fichiers de sauvegarde, etc. -
Utiliser la fonction
fwrite()
pour créer un fichier en php - La fonction
fwrite()
est utilisée pour écrire des données dans un fichier. Elle prend en paramètre le nom du fichier, les données à écrire et la longueur des données., vous pouvez utiliser le code suivant : - Notez que le mode « w » utilisé pour ouvrir le fichier signifie qu’il sera écrasé s’il existe déjà. Si vous voulez ajouter du contenu à un fichier existant plutôt que de l’écraser, vous pouvez utiliser le mode « a » (append) pour ouvrir le fichier.
- Voici un autre exemple de code pour créer un fichier nommé « monfichier.txt » et y écrire les données « Bonjour tout le monde » :
- Il est important de noter que si le fichier n’existe pas, il sera créé lors de l’utilisation de la fonction
fopen()
en mode écriture (ici ‘w‘). Si le fichier existe déjà, tout son contenu sera écrasé lors de l’utilisation de la fonctionfwrite()
. Il est donc important de faire attention à utiliser la bonne méthode d’ouverture de fichier (lecture ou écriture) selon les besoins de votre script. -
Utiliser la fonction
file_put_contents()
pour créer un fichier en php - La fonction
file_put_contents()
en PHP permet de créer ou de mettre à jour un fichier avec des données. Elle prend deux arguments obligatoires : le nom du fichier (y compris le chemin d’accès) et les données à écrire dans le fichier. - Il y a un troisième argument optionnel pour les options d’écriture.
- Voici un exemple d’utilisation de la fonction
file_put_contents()
pour écrire du texte dans un fichier : - Cela écrira le contenu de la variable $data dans le fichier example.txt. Si le fichier n’existe pas, il sera créé. Si le fichier existe déjà, il sera écrasé et remplacé par les nouvelles données.
- Il est possible d’utiliser le troisième argument pour ajouter des options d’écriture :
- Cela ajoutera les nouvelles données à la fin du fichier existant (FILE_APPEND) et verrouillera le fichier pour éviter les conflits d’écriture simultanée (LOCK_EX)
-
Méthodes d’ouverture d’un fichier avec PHP
- Il existe plusieurs méthodes pour ouvrir un fichier avec PHP :
- La fonction
fopen()
: cette fonction permet d’ouvrir un fichier en spécifiant le mode d’accès (lecture, écriture, etc.). Exemple :$fichier = fopen("nomdufichier.txt", "r");
- La fonction
file()
: cette fonction permet de lire le contenu d’un fichier ligne par ligne. Exemple :$lignes = file("nomdufichier.txt");
- La fonction
fread()
: cette fonction permet de lire un certain nombre de caractères d’un fichier ouvert. Exemple :$contenu = fread($fichier, filesize("nomdufichier.txt"));
- La fonction
file_get_contents()
: cette fonction permet de lire le contenu d’un fichier en entier. Il est a noter que cette fonction est considérée comme dépréciée Exemple :$contenu = file_get_contents("nomdufichier.txt");
- Il est important de se rappeler de fermer le fichier une fois qu’il a été ouvert en utilisant la fonction fclose($fichier) pour libérer les ressources système.
-
Utiliser la fonction
fopen()
- La fonction
fopen()
est utilisée pour ouvrir un fichier dans PHP. Elle prend en paramètre le nom ou le chemin du fichier à ouvrir et le mode d’accès souhaité (lecture, écriture, etc.). -
La syntaxe de la fonction
fopen()
: -
Les paramètres de la fonction
fopen()
-
string $nom
- La fonction
fopen()
ouvre le fichier dont le nom est contenu dans la chaine pointée par path et lui associe un flux. - Le paramètre string $nom de la fonction
fopen()
est une chaîne de caractères indiquant le nom du fichier que vous souhaitez utiliser. -
string mode
- Le paramètre string mode de la fonction
fopen()
pointe vers une chaîne commençant par l’une des séquences suivantes (d’autres caractères peuvent suivre la séquence) : -
[boolean path]
- Le troisième paramètre est un booléen.
- S’il vaut TRUE (ou 1), la recherche du fichier est étendue à tous les sous-répertoires du chemin indiqué dans le premier paramètre.
- S’il vaut FALSE, la recherche est limitée à l’emplacement indiqué.
-
Exemple d’utilisation de de la fonction
fopen()
: - Voici un exemple d’utilisation de la fonction
fopen()
pour ouvrir un fichier en mode lecture : - Si le fichier a été ouvert avec succès, la fonction
fopen()
retourne un pointeur sur le fichier. Sinon, elle retourne false. Il est donc important de vérifier le résultat de la fonction avant de continuer à utiliser le fichier. - Voici un exemple complet d’utilisation de la fonction
fopen()
pour lire le contenu d’un fichier : - Dans cet exemple, on ouvre le fichier « example.txt » en mode lecture, on vérifie que l’ouverture s’est bien passée, puis on lit le contenu du fichier ligne par ligne à l’aide de la fonction fgets() jusqu’à la fin du fichier (feof() retourne true lorsque la fin du fichier est atteinte). Enfin, on ferme le fichier à l’aide de la fonction fclose().
-
Utilisez la fonction
file()
pour lire les fichiers texte ligne par ligne en PHP - La fonction
file()
de PHP permet de lire le contenu d’un fichier ligne par ligne et de le stocker dans un tableau. - Syntaxe:
file ( string $filename , int $flags = 0 , resource $context = ? ) : array
- La fonction
file()
a trois paramètres : - $filename est le chemin d’accès au fichier.
- $flags est un paramètre facultatif qui peut être une ou plusieurs des constantes ci-dessous.
- FILE_USE_INCLUDE_PATH: Recherchez le fichier dans le chemin d’inclusion.
- FILE_IGNORE_NEW_LINES: Ignorer la nouvelle ligne à la fin de l’élément de tableau.
- FILE_SKIP_EMPTY_LINES: Ignorer les lignes vides dans le fichier.
- $context est une ressource de contexte de flux valide.
-
Exemple d’utilisation :
- Dans cet exemple, le contenu de « fichier.txt » est lu ligne par ligne et stocké dans le tableau $file_contents. Le contenu de chaque ligne est ensuite affiché à l’aide d’une boucle foreach.
- Dans cet exemple, la variable $filePath contient le chemin vers le fichier texte que nous voulons lire. La fonction file() est utilisée pour lire le contenu du fichier et le stocker dans la variable $fileContent, qui est ensuite utilisée pour afficher chaque ligne du fichier en utilisant une boucle foreach.
- Il est important de noter que la fonction
file()
renvoie un tableau contenant chaque ligne du fichier, donc il est nécessaire de parcourir chaque élément du tableau pour afficher tout le contenu du fichier. -
Méthodes de fermeture d’un fichier en php
- Il y a plusieurs façons de fermer un fichier en PHP:
- La fonction
fclose()
: Cette fonction prend en paramètre un pointeur de fichier obtenu en utilisant une des fonctions d’ouverture (comme fopen()) et ferme le fichier associé à ce pointeur. - La fonction
feof()
: Cette fonction prend en paramètre un pointeur de fichier et renvoie TRUE si le pointeur de fichier se trouve à la fin du fichier. Ce qui permet de fermer le fichier après que toutes les opérations nécessaires ont été effectuées. - La fonction
unset()
: Cette fonction permet de fermer un fichier en détruisant la variable qui contient le pointeur de fichier. Exemple :unset($fichier);
- La fonction
fwrite()
: Si vous utilisez la fonction fwrite() pour écrire dans un fichier, vous pouvez spécifier l’option « F » pour fermer automatiquement le fichier après l’écriture. Exemple :fwrite($fichier, "contenu", "F");
-
Utiliser la fonction
fclose()
pour fermer un fichier - Après avoir ouvert un fichier pour y effectuer des opérations de lecture ou d’écriture, il vous faut le fermer pour éviter tous autres opérations sur ce ficher.
- Pour fermer un fichier utiliser la fonction
fclose()
, qui nécessite un paramètre. - La syntaxe de la fonction
fclose()
: - Le paramètre de la fonction
fclose()
-
$id_file
- Le paramètre
$id_file
retourné par la fonctionfopen()
. - Cette fonction retourne la valeur booléenne TRUE si l’opération de fermeture s’est bien effectuée, et FALSE dans le cas contraire.
-
Utiliser la fonction
feof()
- La fonction
feof()
vérifie si le pointeur de fichier est à la fin du fichier. Tant que ce n’est pas le cas, la boucle while continue à lire les lignes du fichier et à les afficher. Une fois que le pointeur de fichier atteint la fin du fichier, la boucle se termine et la fonctionfclose()
est utilisée pour fermer le fichier. -
Verrouillage du fichier
- Si plusieurs utilisateurs accèdent au même fichier à partir du même script ou de deux scripts différents et y effectuent simultanément des opérations de lecture ou d’écriture, le fichier risque de devenir inutilisable pour chacun d’eux.
- Pour remédier à ce problème, il est essentiel, avant d’écrire ou de lire un fichier, que les scripts qui y accèdent définissent une priorité d’accès au premier script effectuant une opération de verrouillage sur le fichier.
- Pour verrouiller un fichier utiliser la fonction
flock()
, qui nécessite un paramètre. - La fonction
flock()
permet de réaliser un système simple de verrous écriture/lecture, qui peut être utilisé sur n’importe quelle plate-forme (Unix et Windows compris). - La syntaxe de la fonction
flock()
: - Les paramètres de la fonction
flock()
-
$id_file
-
int N
- Ce paramètre est une constante entière nommée qui définit le mode de verrouillage du fichier :
flock($id_file,LOCK_SH)
bloque l’écriture dans le fichier mais laisse le libre accès en lecture à tous les utilisateurs. La constante LOCK_SH a la valeur 1.flock($id_file,LOCK_EX)
bloque l’écriture et la lecture du fichier par un autre script.
Le script en cours a donc l’exclusivité. Une tentative d’accès simultané retourne la valeur FALSE. La constante LOCK_EX a la valeur 2.flock($id_file,LOCK_UN)
libère le verrou installé précédemment. Vous ne devez surtout pas oublier d’effectuer cette action après les opérations réalisées sur le fichier, faute de quoi le blocage subsiste. La constante LOCK_UN a la valeur 3.-
Applications
-
App-01
- Soit l’exemple de code suivant qui permet de lire un fichier texte avec PHP :
- Créer le fichier « fichier.txt » et le remplir avec quelques ligne
- Afficher le contenu de ce fichier dans un textArea
- Ce script utilise la fonction
fopen()
pour ouvrir le fichier, la fonctionfread()
pour lire le contenu du fichier et la fonctionfclose()
pour fermer le fichier une fois que la lecture est terminée. La variable$_POST['submit']
est utilisée pour vérifier si le bouton « Read File » a été cliqué pour que la lecture du fichier ne se produise que lorsque le bouton est cliqué. - Réaliser un script Php qui utilise la fonction
file_put_contents()
pour écrire le contenu d’un textarea dans un fichier text. - Ce script utilise la fonction
file_put_contents()
pour écrire le contenu du textarea dans un fichier. La variable$_POST['content']
contient le contenu saisi dans le textarea et est utilisée pour écrire le fichier. -
App-02
- Écrire un script php qui produit le comptage des visites.
- Le comptage des visites sera enregistré dans un fichier compteur_visites.txt.
- Le programme sera déclenché à l’arrivé du visiteur sur la page d’accueil du site.
- Le comptage est déclenché sans que le visiteur en ait conscience.
- Créer une page web permettant de consulter le résultat du genre « nombre visites ».
- Ce script ouvre le fichier « compteur_visites.txt » (ou le crée s’il n’existe pas), lit son contenu, incrémente le compteur de visites, écrit le nouveau nombre de visites dans le fichier et ferme le fichier. Il affiche également le nombre de visites sur la page d’accueil.
- Pour créer une page web qui affiche uniquement le nombre de visites, vous pouvez utiliser le même script sans l’instruction echo.
- Et pour inclure ce script sur la page d’accueil, vous pouvez utiliser la fonction « include » ou « require » de PHP.
- Notez que cet exemple est très simple et peut facilement être contourné par des utilisateurs malveillants. Il est donc conseillé d’utiliser des méthodes plus robustes pour compter les visites
<?php
$file = "monfichier.txt"; // nom du fichier à créer
$text = "Ceci est le contenu du fichier"; // contenu du fichier
$handle = fopen($file, "w"); // ouvrir le fichier en mode écriture
fwrite($handle, $text); // écrire le contenu dans le fichier
fclose($handle); // fermer le fichier
?>
<?php
$nomfichier = "monfichier.txt";
$donnees = "Bonjour tout le monde";
$longueur = strlen($donnees);
// ouvre le fichier en mode écriture
$fichier = fopen($nomfichier, 'w');
// écrit les données dans le fichier
fwrite($fichier, $donnees, $longueur);
// ferme le fichier
fclose($fichier);
echo "Le fichier a été créé avec succès.";
?>
$file = 'example.txt';
$data = 'This is some text to write to the file.';
file_put_contents($file, $data);
$file = 'example.txt';
$data = 'This is some text to write to the file.';
file_put_contents($file, $data, FILE_APPEND | LOCK_EX);
resource fopen(string $nom, string mode, [boolean path])
Mode | Description |
---|---|
‘r’ | * Ouvre en lecture seule, et place le pointeur de fichier au début du fichier. * Le fichier est ouvert en lecture seule, et la lecture commence au début du fichier. |
‘r+’ | * Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier. * Le fichier est ouvert en lecture et en écriture, et ces opérations commencent 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. * Le fichier est ouvert en écriture seule, et l’écriture commence au début du fichier. |
‘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. * Le fichier est ouvert en lecture et en écriture, et ces opérations commencent au début du fichier |
‘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. * Le fichier est ouvert en écriture seule, et les données sont écrites en fin de fichier, à la suite de celles qui existent déjà ou au début s’il est vide. Si le fichier n’existe pas, il est créé. |
‘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. |
Attention
Pour les modes « w » et « w+ », si le fichier n’existe pas il est créé automatiquement. S’il existe, son contenu antérieur est effacé. Il faut donc prendre des précautions avant d’utiliser ce mode d’accès.
$file = fopen("example.txt", "r");
$file = fopen("example.txt", "r");
if ($file) {
while (!feof($file)) {
echo fgets($file);
}
fclose($file);
} else {
echo "Impossible d'ouvrir le fichier example.txt";
}
$file_contents = file("fichier.txt");
foreach ($file_contents as $line) {
echo $line;
}
<?php
// Chemin du fichier à lire
$filePath = "chemin/vers/mon/fichier.txt";
// Utilisation de la fonction file() pour lire le contenu du fichier
$fileContent = file($filePath);
// Boucle pour afficher chaque ligne du contenu du fichier
foreach($fileContent as $line) {
echo $line . "
";
}
?>
boolean fclose($id_file)
boolean flock(resource $id_file,int N)
<?php
// Chemin du fichier à lire
$filePath = "chemin/vers/mon/fichier.txt";
// Utilisation de la fonction file() pour lire le contenu du fichier
$fileContent = file($filePath);
// Boucle pour afficher chaque ligne du contenu du fichier
foreach($fileContent as $line) {
echo $line . "
";
}
?>
Solution
<form method="post">
<textarea name="content" rows="10" cols="30">
<?php
if(isset($_POST['submit'])) {
$file = fopen("file.txt", "r") or die("Impossible d'ouvrir le fichier!");
echo fread($file, filesize("file.txt"));
fclose($file);
}
?>
</textarea>
<input type="submit" name="submit" value="Read File">
</form>
Solution
<form method="post">
<textarea name="content" rows="10" cols="30"></textarea>
<input type="submit" name="submit" value="Read File">
<input type="submit" name="save" value="Save File">
</form>
<?php
if(isset($_POST['save'])) {
$file = 'file.txt';
$content = $_POST['content'];
file_put_contents($file, $content);
}?>
Solution
<?php
// Ouvrir ou créer le fichier compteur_visites.txt
$compteur_visites = fopen("compteur_visites.txt", "a+");
// Lire le contenu actuel du fichier
$nombre_visites = fread($compteur_visites, filesize("compteur_visites.txt"));
// Incrémenter le compteur de visites
$nombre_visites++;
// Écrire le nouveau nombre de visites dans le fichier
fwrite($compteur_visites, $nombre_visites);
// Fermer le fichier
fclose($compteur_visites);
// Afficher le nombre de visites sur la page d'accueil
echo "Nombre de visites : " . $nombre_visites;
?>
<?php
// Ouvrir ou créer le fichier compteur_visites.txt
$compteur_visites = fopen("compteur_visites.txt", "a+");
// Lire le contenu actuel du fichier
$nombre_visites = fread($compteur_visites, filesize("compteur_visites.txt"));
// Incrémenter le compteur de visites
$nombre_visites++;
// Écrire le nouveau nombre de visites dans le fichier
fwrite($compteur_visites, $nombre_visites);
// Fermer le fichier
fclose($compteur_visites);
// Afficher le nombre de visites sur la page de consultation
echo "Nombre de visites : " . $nombre_visites;
?>
–>
<?php require 'compteur.php';>
- Références:
- https://www.php.net
- Livre PHP7 Cours et exercices Jean Engels 2e édition
- Technologies de l’Information et de la Communication 4 année secondaire