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é.";
}

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