file_exists() en PHP: vérifier l’existence d’un fichier

La fonction file_exists() est utilisée pour savoir si un fichier ou un dossier existe avant de faire quelque chose avec. Cela évite des erreurs et rend ton code plus sûr.

📌 À retenir : la fonction existe depuis PHP 4 et reste disponible dans PHP 8+..C’est une des plus utilisée dans le développement web.


Signature de la fonction file_exists() ?

file_exists(string $filename): bool

la fonction prend un chemin de fichier et renvoie une valeur :

  • true si le fichier ou dossier existe
  • false sinon

📌 Elle ne fait pas autre chose que vérifier l’existence.


Syntaxe simple

if (file_exists($chemin)) {
    // le fichier existe
} else {
    // le fichier n'existe pas
}

Exemples pratiques

1) Vérifier avant un include / require

$chemin = "config/settings.php";

if (file_exists($chemin)) {
    include $chemin; // on évite une erreur
} else {
    echo "Fichier de config manquant.";
}

💡 Sans ça, include peut provoquer un message d’erreur si le fichier n’est pas trouvé.


2) Vérifier un fichier uploadé

$photo = "uploads/" . $_FILES['photo']['name'];

if (file_exists($photo)) {
    echo "Ce fichier existe déjà !";
} else {
    move_uploaded_file($_FILES['photo']['tmp_name'], $photo);
}

💡 Astuce : cela aide à éviter de écraser un fichier existant.


3) Vérifier un dossier avant création

$dossier = "backups/2026";

if (!file_exists($dossier)) {
    mkdir($dossier, 0755);
    echo "Dossier créé.";
}

4) Vérifier un fichier avant suppression

$fichier = "temp/data.txt";

if (file_exists($fichier)) {
    unlink($fichier);
    echo "Fichier supprimé.";
}
schema de fonctionnement de la fonction file_exists

Pièges & erreurs fréquentes

Chemins relatifs vs absolus

⚠️ Si tu utilises un chemin relatif, l’endroit où PHP cherche dépend de ton fichier actuel.
➡️ Un mauvais chemin donne false, même si le fichier existe.

./
 ├ index.php
 └ files/
     └ doc.txt
file_exists("files/doc.txt"); // vrai
file_exists("doc.txt");       // faux si le script n'est pas au bon endroit

❌ Fichier existe mais renvoie false à cause de la casse

⚠️ Sur des systèmes sensibles à la casse (Linux),
File.txt et file.txt ne sont pas les mêmes.

file_exists("file.txt"); // false si le nom du fichier est "File.txt"

🚫 Symlinks vers fichier non existant

⚠️ Si un lien symbolique pointe vers un fichier qui n’existe plus,
file_exists() retourne false.


Chemins — schéma rapide

/var/www/
├ index.php
├ uploads/
│   └ image.png
└ docs/
    └ cv.pdf
file_exists("uploads/image.png")  → vrai
file_exists("/var/www/docs/cv.pdf") → vrai
file_exists("docs/cv.pdf")         → vrai si on est en /var/www/
file_exists("docs/../uploads")     → existe aussi

FAQ

La fonction peut-elle vérifier une URL ?

Non. file_exists() vérifie le système de fichiers local, pas une adresse web.
Si tu veux tester un fichier distant, il faut utiliser curl ou fopen().


Pourquoi file_exists() retourne false même si le fichier est là ?

👉 Mauvais chemin
👉 Casse différente
👉 Permissions insuffisantes
👉 Cache stat non rafraîchi (voir ci-dessous)


Est-elle rapide ?

Oui, mais elle met en cache les résultats pendant la requête PHP pour les fichiers existants.
👉 Si tu changes un fichier puis vérifies immédiatement, utilise clearstatcache() pour forcer PHP à refaire la vérification.


Que faire en cas d’erreur ?

Si tu veux afficher un message propre, vérifie avant d’opérer au lieu de compter sur une erreur après coup.
Exemple :

if (!file_exists($fichier)) {
    echo "Le fichier est introuvable.";
    exit;
}

Bonnes pratiques

✅ Toujours vérifier avant d’ouvrir, supprimer ou inclure un fichier
✅ Utiliser des chemins absolus pour éviter les erreurs de contexte
✅ Ne pas compter sur file_exists pour des fichiers distants
✅ Rafraîchir le cache si tu manipules un fichier juste après l’avoir modifié


Conclusion

file_exists() est une fonction simple et utile pour vérifier l’existence d’un fichier ou d’un dossier. Elle aide à éviter des erreurs courantes avant de faire des opérations sensibles.
Quelques petites règles à connaître (chemins, casse, cache) rendent ton code solide et propre.

retour à la liste des fonctions

Source : php.net

Cours

Variables et types

Manipulation de chaînes

Tableaux

Fichiers et système

Sécurité, session et cookie