W3docs

is_dir()

La fonction is_dir() est une fonction PHP intégrée qui vérifie si un chemin donné est un répertoire et retourne true si c'est le cas.

Qu'est-ce que la fonction is_dir() ?

La fonction is_dir() est une fonction PHP intégrée qui indique si un chemin donné existe et pointe vers un répertoire (dossier). Elle retourne true lorsque le chemin est un répertoire existant, et false dans tous les autres cas — un fichier ordinaire, un chemin qui n'existe pas, ou un chemin pour lequel vous n'avez pas la permission de lecture.

C'est l'une des fonctions PHP de « vérification de type » du système de fichiers, aux côtés de is_file(), is_link() et file_exists(). Utilisez is_dir() chaque fois que vous devez confirmer qu'un répertoire est présent avant de le lire, d'y écrire ou de le créer.

Syntaxe

is_dir(string $filename): bool
  • $filename — le chemin à tester. Il peut être absolu (/var/www/uploads) ou relatif au répertoire de travail courant du script (uploads). Un slash final est autorisé.
  • Valeur de retourtrue si $filename existe et est un répertoire, sinon false.

Exemple de base

php— editable, runs on the server

__DIR__ est une constante magique qui pointe toujours vers un répertoire existant, donc cet exemple affiche de manière fiable la branche « is a directory ».

Distinguer un répertoire d'un fichier

L'utilisation la plus courante de is_dir() consiste à bifurquer selon ce qu'est réellement un chemin. Comparez-la avec is_file() :

<?php

$paths = [__DIR__, __FILE__, '/path/that/does/not/exist'];

foreach ($paths as $path) {
    if (is_dir($path)) {
        echo "$path -> directory\n";
    } elseif (is_file($path)) {
        echo "$path -> file\n";
    } else {
        echo "$path -> missing\n";
    }
}

__FILE__ est le chemin complet du script courant, donc il est signalé comme un fichier, tandis que le chemin inventé est signalé comme manquant.

Utilisation pratique : créer le répertoire uniquement s'il est absent

Protéger mkdir() avec is_dir() évite un avertissement lorsque le dossier existe déjà :

<?php

$dir = sys_get_temp_dir() . '/my_app_cache';

if (!is_dir($dir)) {
    mkdir($dir, 0755, true); // true = create parent dirs too
    echo "Created: $dir";
} else {
    echo "Already exists: $dir";
}

Pièges courants

  • is_dir() retourne false, pas une erreur, lorsque le chemin n'existe pas. Un résultat false ne signifie pas « c'est un fichier » — le chemin peut simplement être absent. Utilisez file_exists() si vous voulez seulement savoir si quelque chose est présent.
  • Les liens symboliques sont suivis. Si le chemin est un lien symbolique pointant vers un répertoire, is_dir() retourne true. Pour détecter le lien lui-même, utilisez is_link().
  • Les résultats sont mis en cache. PHP met en cache les résultats de stat(), donc si un répertoire est créé ou supprimé par un autre processus en cours d'exécution du script, vous pouvez obtenir une réponse obsolète. Appelez clearstatcache() pour forcer une vérification fraîche.
  • Les chemins relatifs dépendent du répertoire de travail. is_dir('data') est résolu par rapport au répertoire de travail courant (getcwd()), pas à l'emplacement du script. Utilisez __DIR__ . '/data' lorsque vous voulez dire « à côté de ce script ».

Fonctions associées

FonctionVérifie
is_file()Un fichier ordinaire
is_link()Un lien symbolique
file_exists()L'existence d'un fichier ou d'un répertoire
is_readable()Un chemin lisible
scandir()Le contenu d'un répertoire
mkdir()La création d'un répertoire

Conclusion

is_dir() est la manière sûre et standard de confirmer qu'un chemin est un répertoire existant avant d'agir dessus. Gardez à l'esprit qu'elle suit les liens symboliques, met ses résultats en cache, et résout les chemins relatifs par rapport au répertoire de travail courant — l'associer à file_exists(), is_file() et mkdir() couvre presque toutes les situations de gestion de répertoires que vous rencontrerez.

Pratique

Pratique
Quel est le rôle de la fonction is_dir() en PHP ?
Quel est le rôle de la fonction is_dir() en PHP ?
Was this page helpful?