Trabajo con el sistema de archivos en PHP: fundamentos y ejemplos prácticos
Trabajar con el sistema de archivos es una de las tareas clave del desarrollo web en PHP. Ya sea para cargar imágenes, escribir registros, leer archivos de configuración o gestionar datos temporales, el conocimiento de las funciones para trabajar con archivos y directorios es necesario para todo desarrollador PHP. En este artículo, analizaremos en detalle las operaciones básicas: abrir, leer, escribir, cerrar archivos, así como gestionar carpetas y permisos de acceso.
Funciones principales para trabajar con archivos en PHP
PHP proporciona un rico conjunto de funciones integradas. Veamos las más importantes.
Abrir y cerrar un archivo: fopen() y fclose()
Para empezar a trabajar con un archivo, primero hay que abrirlo con fopen(). La función acepta dos parámetros obligatorios: la ruta al archivo y el modo de apertura. El modo determina qué se puede hacer con el archivo: leer, escribir, añadir datos al final, etc.
Modos principales:
r— solo lectura. El puntero al inicio del archivo.r+— lectura y escritura. El puntero al inicio.w— solo escritura. Si el archivo existe, se vacía. Si no, se crea.w+— lectura y escritura. Vacía el archivo o crea uno nuevo.a— solo escritura al final del archivo. Si el archivo no existe, se crea.a+— lectura y escritura al final.
<?php$file = fopen("example.txt", "w"); // Abrimos el archivo para escrituraif ($file) { echo "Archivo abierto correctamente."; fclose($file); // Siempre cierre el archivo después de trabajar} else { echo "No se pudo abrir el archivo.";}?>Lectura de un archivo: fgets(), fread() y file_get_contents()
La forma más sencilla de leer un archivo completo es la función file_get_contents(). Devuelve el contenido como una cadena.
<?php$content = file_get_contents("example.txt");echo $content;?>Si necesita leer línea por línea (por ejemplo, para archivos grandes), use fgets() en un bucle:
<?php$file = fopen("example.txt", "r");while (!feof($file)) { $line = fgets($file); echo $line . "<br>";}fclose($file);?>La función fread() permite leer una cantidad determinada de bytes:
<?php$file = fopen("example.txt", "r");$content = fread($file, 100); // Leemos los primeros 100 bytesecho $content;fclose($file);?>Escritura en un archivo: fwrite() y file_put_contents()
Para escribir datos en un archivo, es conveniente usar file_put_contents(). Abre el archivo, escribe la cadena y lo cierra con un solo comando.
<?php$data = "¡Hola, mundo!";file_put_contents("example.txt", $data);?>Si necesita añadir datos al final, use la bandera FILE_APPEND:
<?php$data = "Nueva línea";file_put_contents("example.txt", $data, FILE_APPEND);?>Para una escritura más flexible (por ejemplo, en modo binario), se utiliza fwrite():
<?php$file = fopen("example.txt", "w");fwrite($file, "Cadena para escribir");fclose($file);?>Trabajo con directorios en PHP
Además de archivos, PHP permite gestionar carpetas: crear, eliminar y leer su contenido.
Creación y eliminación de carpetas: mkdir() y rmdir()
La función mkdir() crea un nuevo directorio. Como segundo parámetro se pueden especificar los permisos de acceso (por defecto 0777).
<?phpif (mkdir("new_folder", 0777)) { echo "Carpeta creada.";} else { echo "Error al crear la carpeta.";}?>Para eliminar una carpeta vacía, use