Travail avec le système de fichiers en PHP : des bases aux projets réels
\n\nLe travail avec le système de fichiers est l'une des tâches clés de tout développeur web. En PHP, il existe un ensemble puissant de fonctions intégrées permettant de créer, lire, éditer et supprimer des fichiers, ainsi que de gérer les répertoires. Dans cet article, nous allons examiner des exemples pratiques qui vous aideront à maîtriser le travail avec les fichiers en PHP et à appliquer ces connaissances dans des projets réels.
\n\nQue vous créiez un système de journalisation, un téléchargeur de fichiers ou que vous sauvegardiez simplement des données utilisateur, comprendre les bases du système de fichiers en PHP est une compétence obligatoire. Passons à la pratique.
\n\nFonctions principales pour travailler avec les fichiers
\n\nPHP offre plusieurs façons d'interagir avec les fichiers. Les plus populaires sont l'utilisation de fopen, fwrite, fread et des fonctions de haut niveau file_get_contents et file_put_contents. Examinons-les avec des exemples.
Création et écriture dans un fichier
\n\nPour créer un fichier et y écrire, utilisez la fonction fopen avec le mode 'w' (écriture avec effacement) ou 'a' (ajout à la fin).
<?php\n$filename = 'log.txt';\n$file = fopen($filename, 'w');\n\nif ($file) {\n fwrite($file, "Ligne 1 : Écriture dans le fichier\\n");\n fwrite($file, "Ligne 2 : Une autre écriture\\n");\n fclose($file);\n echo "Fichier créé et écrit avec succès.";\n} else {\n echo "Erreur d'ouverture du fichier.";\n}\n?>\n\nSi vous devez écrire rapidement des données sans gérer le pointeur, utilisez file_put_contents :
<?php\n$data = "Nouveau contenu pour le fichier.\\nDeuxième ligne.";\nfile_put_contents('data.txt', $data);\necho "Données écrites.";\n?>\n\nLecture d'un fichier
\n\nPour lire un fichier ligne par ligne, utilisez fgets dans une boucle :
<?php\n$file = fopen('log.txt', 'r');\nif ($file) {\n while (($line = fgets($file)) !== false) {\n echo $line . "<br>";\n }\n fclose($file);\n}\n?>\n\nAlternative — file_get_contents pour lire tout le contenu dans une chaîne :
<?php\n$content = file_get_contents('log.txt');\necho nl2br($content);\n?>\n\nVérification de l'existence et des propriétés des fichiers
\n\nAvant de travailler avec un fichier, il est important de vérifier qu'il existe et qu'il est accessible en lecture ou en écriture. PHP fournit les fonctions file_exists, is_readable, is_writable et filesize.
Exemple de vérification de fichier
\n\n<?php\n$file = 'config.php';\n\nif (file_exists($file)) {\n echo "Le fichier existe.<br>";\n \n if (is_readable($file)) {\n echo "Le fichier est accessible en lecture.<br>";\n echo "Taille du fichier : " . filesize($file) . " octets.";\n } else {\n echo "Le fichier existe mais n'est pas accessible en lecture.";\n }\n} else {\n echo "Fichier non trouvé.";\n}\n?>\n\nVérification du type de fichier
\n\nLa fonction filetype retourne le type de fichier : 'file', 'dir', 'link' et autres.
<?php\n$path = 'uploads';\nif (file_exists($path)) {\n echo "Type : " . filetype($path); // affichera 'dir' si c'est un dossier\n}\n?>\n\nGestion des répertoires
\n\nLe travail avec les dossiers en PHP n'est pas moins important. Vous pouvez créer, supprimer et scanner des répertoires.
\n\nCréation et suppression de dossiers
\n\n<?php\n// Création d'un dossier\nif (!file_exists('backup')) {\n mkdir('backup', 0777, true); // troisième paramètre true — création récursive\n echo "Dossier créé.";\n}\n\n// Suppression d'un dossier vide\nif (file_exists('temp')) {\n rmdir('temp');\n echo "Dossier supprimé.";\n}\n?>\n\nScan du contenu d'un répertoire
\n\nLa fonction scandir retourne un tableau de tous les fichiers et dossiers