Introducción: por qué es importante saber trabajar con el sistema de archivos en PHP
Cualquier desarrollador web, tarde o temprano, se enfrenta a la necesidad de guardar datos en el servidor, cargar imágenes, crear archivos temporales o leer configuraciones. PHP proporciona un potente conjunto de funciones para trabajar con el sistema de archivos que permiten realizar todas estas tareas de forma rápida y segura.
En este artículo, analizaremos las operaciones más demandadas: lectura y escritura de archivos, creación y eliminación de directorios, verificación de la existencia de elementos, así como el trabajo con rutas. Todos los ejemplos están escritos en PHP y listos para usar en sus proyectos.
Funciones principales para trabajar con archivos
Empecemos con las operaciones básicas: abrir, leer y escribir archivos. PHP admite varias formas de interactuar con archivos, y veremos las más populares.
Abrir y cerrar un archivo: fopen y fclose
La función fopen() abre un archivo y devuelve un descriptor para trabajar posteriormente. Los modos de apertura determinan qué puede hacer con el archivo: leer (r), escribir (w), añadir (a), etc.
<?php// Abrimos un archivo para lectura$file = fopen("data.txt", "r");if ($file) { // Trabajamos con el archivo fclose($file); // Obligatorio cerrarlo} else { echo "No se pudo abrir el archivo";}?>Lectura de un archivo: fread, fgets, file_get_contents
Para leer el contenido se pueden usar diferentes funciones según la tarea:
fread()— lee una cantidad específica de bytes.fgets()— lee una línea.file_get_contents()— la forma más sencilla de leer todo el archivo completo.
<?php// Lectura de todo el archivo$content = file_get_contents("example.txt");echo $content;
// Lectura línea por línea$file = fopen("example.txt", "r");while (($line = fgets($file)) !== false) { echo $line . "<br>";}fclose($file);?>Escritura en un archivo: fwrite y file_put_contents
La escritura de datos se realiza con fwrite() (requiere un descriptor abierto) o file_put_contents() (una sola línea y el archivo está escrito).
<?php// Escritura rápidafile_put_contents("log.txt", "Nueva entrada", FILE_APPEND);
// Escritura con fwrite$file = fopen("config.ini", "w");fwrite($file, "db_host=localhost");fwrite($file, "db_user=root");fclose($file);?>Trabajo con directorios
Crear, eliminar y navegar por carpetas es otra parte importante del trabajo con el sistema de archivos en PHP.
Creación y eliminación de carpetas: mkdir y rmdir
La función mkdir() crea un nuevo directorio. El tercer parámetro recursive permite crear carpetas anidadas con un solo comando.
<?php// Creamos una carpetamkdir("uploads", 0777);
// Creamos carpetas anidadas (2025 → 03 → images)mkdir("uploads/2025/03/images", 0777, true);
// Eliminamos una carpeta vacíarmdir("uploads/temp");?>Verificación de existencia de archivos y carpetas
Antes de realizar operaciones, siempre es útil verificar si existe un archivo o directorio. Para ello se utilizan las funciones file_exists(), is_file() e is_dir().
<?php$path = "data/config.php";if (file_exists($path)) { echo "El archivo o carpeta existe";}if (is_file($path)) { echo "Es un archivo";}if (is_dir("uploads")) { echo "Es un directorio";}?>Obtener la lista de archivos en un directorio
La función scandir() devuelve un array con todos los elementos de la carpeta. Y glob() permite filtrar por máscara (por ejemplo, solo imágenes).
<?php// Todos los archivos y carpetas$items = scandir("uploads");print_r($items);
// Solo archivos PHP$phpFiles = glob("*.php");for