HOWTO · PHP

Vérifier si le fichier existe en PHP

Cet article présente la manière de vérifier si un fichier existe en PHP. Il inclut la fonction file_exists().

Sur cette page

Utilisez file_exists() en PHP pour vérifier si un chemin correspond actuellement à un fichier ou à un répertoire existant. La fonction renvoie un booléen, ce qui permet de choisir la suite du programme en fonction du résultat. La vérification décrit l’état du chemin à cet instant; elle ne garantit pas la réussite d’une opération ultérieure sur le fichier.

Vérifier si un chemin existe avec file_exists()

Transmettez le chemin sous forme de chaîne. Cet exemple autonome crée un fichier temporaire, le vérifie, puis le supprime; la branche de réussite ne dépend donc pas de la présence préalable d’un fichier dans le projet.

Exécutez cet exemple. Les libellés affichés par le bloc de code restent en anglais, car celui-ci est conservé à l’identique.

$directory = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'file-exists-' . uniqid('', true);
mkdir($directory);
$file = $directory . DIRECTORY_SEPARATOR . 'example.txt';
file_put_contents($file, 'Ready');

if (file_exists($file)) {
    echo "File is ready.\n";
} else {
    echo "File was not found.\n";
}

unlink($file);
rmdir($directory);

Aucun résultat d’exécution n’est indiqué pour cet exemple, car ce paquet ne contient pas de preuve d’exécution. Dans votre propre code, reprenez la même structure conditionnelle avec le chemin à vérifier. Un résultat true signifie que le chemin existe; false signifie que PHP ne l’a pas trouvé au moment de la vérification.

Distinguer les fichiers des répertoires

file_exists() renvoie également true pour un répertoire. Si l’étape suivante nécessite précisément un répertoire, vérifiez-le avec is_dir(); pour un fichier ordinaire, utilisez is_file(). Ces vérifications répondent à des questions différentes : l’existence seule ne permet pas de connaître le type du chemin.

Les libellés visibles dans le bloc de code de cette section restent en anglais, car le code est conservé à l’identique.

$path = __DIR__ . DIRECTORY_SEPARATOR . 'uploads';

if (is_dir($path)) {
    echo 'The path is a directory.';
} elseif (is_file($path)) {
    echo 'The path is a file.';
} else {
    echo 'No file or directory was found at this path.';
}

Le chemin est construit à partir de __DIR__, qui désigne le répertoire contenant le fichier PHP courant. Remplacez le dernier élément du chemin par l’emplacement que votre application doit examiner.

Gérer les chemins et les résultats des vérifications en toute sécurité

Un chemin relatif est interprété dans le contexte du processus PHP en cours d’exécution. La même chaîne peut donc désigner des emplacements différents selon le répertoire de travail. Un chemin absolu part de la racine du système de fichiers et indique explicitement l’emplacement visé. Si un chemin relatif donne un résultat inattendu, examinez celui qu’utilise PHP, par exemple en le combinant avec getcwd() pour diagnostiquer le problème, ou construisez-le à partir d’un répertoire connu comme __DIR__.

Servez-vous de la vérification pour choisir une étape suivante adaptée, mais considérez que l’opération elle-même peut échouer. Le chemin peut changer après la vérification, et son existence ne prouve pas que le processus peut le lire, y écrire ou l’utiliser d’une autre manière. Vérifiez aussi le résultat de l’opération réelle et traitez son échec selon les besoins de l’application.

Limites courantes et dépannage

Si file_exists() renvoie false de façon inattendue, vérifiez l’orthographe et la construction du chemin, puis confirmez qu’il désigne l’emplacement attendu dans l’environnement du processus PHP. Demandez-vous également si le chemin a changé entre les vérifications ou si le processus en cours peut examiner l’emplacement correspondant dans le système de fichiers. La fonction indique le résultat de la vérification d’existence du chemin; elle n’explique pas pourquoi le résultat est faux.

Le manuel PHP décrit file_exists() comme une vérification de l’existence d’un fichier ou d’un répertoire et précise que le résultat dépend du contexte de système de fichiers configuré. Ne l’utilisez pas pour vérifier la disponibilité d’une ressource distante : choisissez plutôt le mécanisme adapté au protocole ou au service concerné. Consultez le manuel PHP de file_exists() pour connaître le paramètre, la valeur de retour et les remarques sur la fonction.

Si vous effectuez plusieurs vérifications, ne partez pas du principe qu’un résultat antérieur est toujours valable. Dans la mesure du possible, effectuez directement l’opération souhaitée et traitez son résultat. Votre programme restera ainsi correct si le système de fichiers change entre la vérification et l’opération.