Manipulation de fichiers en PHP : du débutant au pro en 20 minutes

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi la manipulation de fichiers en PHP est indispensable pour tout développeur

\n\n

Imaginez : vous développez une boutique en ligne. Un client télécharge son avatar, un administrateur exporte un CSV avec les produits, et le système enregistre chaque action dans un journal. Sans maîtriser la manipulation du système de fichiers en PHP, ces tâches deviennent un vrai casse-tête. Mais une fois les bases acquises, vous pourrez gérer les données sur le serveur aussi facilement que vous modifiez une note sur votre téléphone.

\n\n

Dans cet article, nous allons explorer la manipulation de fichiers en PHP de manière progressive. Vous apprendrez à lire et écrire des données, vérifier les droits d'accès, télécharger des fichiers sur le serveur et éviter les erreurs courantes. C'est parti !

\n\n

Les bases du système de fichiers en PHP

\n\n

Avant de plonger dans le code, découvrons les principales fonctions offertes par PHP. Elles se divisent en trois catégories :

\n\n
    \n
  • Vérification et métadonnées — le fichier existe-t-il, quelle est sa taille, son type et ses droits d'accès.
  • \n
  • Lecture et écriture — ouvrir un fichier, lire une ligne, écrire des données, fermer le fichier.
  • \n
  • Gestion de la structure des fichiers — création, renommage, suppression de fichiers et de dossiers.
  • \n
\n\n

La plupart des opérations de manipulation de fichiers en PHP ne nécessitent qu'une ou deux lignes de code. Mais il est crucial de comprendre le contexte : où se trouve le fichier par rapport à votre script, quels sont les droits du serveur web, et comment gérer les erreurs.

\n\n

Vérification de l'existence et des droits d'accès

\n\n

La première étape avant toute opération est de vérifier que le fichier existe. Pour cela, on utilise file_exists() :

\n\n
<?php\n$filename = 'config.php';\n\nif (file_exists($filename)) {\n    echo "Le fichier $filename a été trouvé !";\n} else {\n    echo "Le fichier n'existe pas";\n}\n?>
\n\n

Mais l'existence ne suffit pas. Il faut aussi vérifier si on peut le lire ou y écrire. Pour cela, on utilise is_readable() et is_writable() :

\n\n
<?php\n$file = 'data.txt';\n\nif (is_readable($file)) {\n    echo "Lecture possible";\n}\nif (is_writable($file)) {\n    echo "Écriture possible";\n}\n?>
\n\n

C'est particulièrement important lors de la manipulation de fichiers en PHP en production — les droits d'accès (chmod) sont souvent la cause d'erreurs « Permission denied ».

\n\n

Lire des fichiers en PHP : trois méthodes adaptées à chaque besoin

\n\n

La lecture est l'opération la plus courante. PHP propose plusieurs approches, chacune adaptée à une situation spécifique.

\n\n

Méthode 1 : file_get_contents — pour les petits fichiers

\n\n

Si vous devez lire l'intégralité d'un fichier dans une chaîne de caractères, c'est la meilleure option. Simple, rapide, sans effort superflu :

\n\n
<?php\n$content = file_get_contents('readme.txt');\necho $content;\n?>
\n\n

Idéal pour les fichiers de configuration, les templates, les petits journaux. Mais si le fichier pèse 200 Mo, mieux vaut éviter — la mémoire du serveur vous remerciera.

\n\n

Méthode 2 : fopen + fgets — pour les gros fichiers

\n\n

Lorsque vous devez traiter un énorme fichier CSV ou un journal de plusieurs gigaoctets, utilisez la lecture ligne par ligne. Cela évite de charger tout le fichier en mémoire :

\n\n
<?php\n$handle = fopen('bigfile.log', 'r');\nif ($handle) {\n    while (($line = fgets($handle)) !== false) {\n        // Traitez chaque ligne individuellement\n        echo $line . "<br>";\n    }\n    fclose($handle);\n} else {\n    echo "Erreur lors de l'ouverture du fichier";\n}\n?>
\n\n

Notez que nous fermons toujours le fichier avec fclose(). Cela libère les ressources système.

\n\n

Méthode 3 : file() — lire dans un tableau de lignes

\n\n

Si chaque ligne représente une entrée distincte (par exemple, une liste d'adresses email), vous pouvez obtenir directement un tableau :

\n\n
<?php\n$lines = file('users.txt');\nforeach ($lines as $line_num => $line) {\n    echo "Ligne #{$line_num} : " . htmlspecialchars($line) . "<br>";\n}\n?>
\n\n

Cette méthode est pratique, mais comme file_get_contents, elle charge

Blogs

Book Recommendations