Cómo verificar la existencia de una carpeta en PHP: ¿is_dir, file_exists o ambos?
¡Hola a todos! Soy nuevo en PHP y estoy escribiendo un script para subir archivos al servidor. Necesito verificar si existe el directorio donde guardaré los archivos. Si no existe, crearlo.
Me encontré con dos funciones: is_dir() y file_exists(). Y ahora no entiendo cuál usar. Aquí está mi código:
$path = '/uploads/images/';
// Opción 1
if (is_dir($path)) {
echo "La carpeta existe";
} else {
mkdir($path, 0777, true);
}
// Opción 2
if (file_exists($path)) {
echo "La carpeta existe";
} else {
mkdir($path, 0777, true);
}
Ambas opciones parecen funcionar, pero noté un comportamiento extraño. Si especificas la ruta a un archivo en lugar de a una carpeta, file_exists() devuelve true, mientras que is_dir() devuelve false. Esto es confuso.
También leí que file_exists() almacena en caché los resultados, lo que puede provocar errores. Y is_dir() no lo hace. Pero no estoy seguro.