W3docs

is_dir()

La función is_dir() es una función PHP integrada que comprueba si una ruta dada es un directorio. Devuelve true si la ruta es un directorio.

¿Qué es la función is_dir()?

La función is_dir() es una función PHP integrada que indica si una ruta dada existe y apunta a un directorio (carpeta). Devuelve true cuando la ruta es un directorio existente, y false en cualquier otro caso — un archivo regular, una ruta que no existe, o una ruta para la que no tienes permiso de lectura.

Es una de las funciones de "comprobación de tipo" del sistema de archivos de PHP, junto con is_file(), is_link() y file_exists(). Usa is_dir() siempre que necesites confirmar que un directorio existe antes de leerlo, escribir en él o crearlo.

Sintaxis

is_dir(string $filename): bool
  • $filename — la ruta a comprobar. Puede ser absoluta (/var/www/uploads) o relativa al directorio de trabajo actual del script (uploads). Se permite una barra diagonal al final.
  • Valor de retornotrue si $filename existe y es un directorio, false en caso contrario.

Ejemplo básico

php— editable, runs on the server

__DIR__ es una constante mágica que siempre se resuelve en un directorio existente, por lo que este ejemplo imprime de forma fiable la rama "es un directorio".

Distinguir un directorio de un archivo

El uso más habitual de is_dir() es ramificar según lo que realmente es una ruta. Compáralo con 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__ es la ruta completa del script actual, por lo que se informa como archivo, mientras que la ruta inventada se informa como ausente.

Un uso práctico: crear el directorio solo si falta

Proteger mkdir() con is_dir() evita una advertencia cuando la carpeta ya existe:

<?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";
}

Errores comunes

  • is_dir() devuelve false, no un error, cuando la ruta no existe. Un resultado false no significa "esto es un archivo" — simplemente puede estar ausente. Usa file_exists() si solo te importa que algo esté ahí.
  • Los enlaces simbólicos se siguen. Si la ruta es un enlace simbólico que apunta a un directorio, is_dir() devuelve true. Para detectar el propio enlace, usa is_link().
  • Los resultados se almacenan en caché. PHP almacena en caché los resultados de stat(), por lo que si otro proceso crea o elimina un directorio a mitad del script puede que obtengas una respuesta desactualizada. Llama a clearstatcache() para forzar una comprobación actualizada.
  • Las rutas relativas dependen del directorio de trabajo. is_dir('data') se resuelve respecto al directorio de trabajo actual (getcwd()), no a la ubicación del script. Usa __DIR__ . '/data' cuando quieras decir "junto a este script".

Funciones relacionadas

FunciónComprueba
is_file()Un archivo regular
is_link()Un enlace simbólico
file_exists()La existencia de un archivo o directorio
is_readable()Una ruta legible
scandir()Listar el contenido de un directorio
mkdir()Crear un directorio

Conclusión

is_dir() es la forma segura y estándar de confirmar que una ruta es un directorio existente antes de actuar sobre ella. Recuerda que sigue los enlaces simbólicos, almacena en caché su resultado y resuelve las rutas relativas respecto al directorio de trabajo actual — combinarlo con file_exists(), is_file() y mkdir() cubre casi todas las situaciones de manejo de directorios que encontrarás.

Práctica

Práctica
¿Cuál es el propósito de la función is_dir() en PHP?
¿Cuál es el propósito de la función is_dir() en PHP?
Was this page helpful?