Por qué trabajar con archivos en PHP es imprescindible para todo desarrollador
\n\nImagina que estás creando una tienda online. Un cliente sube su foto de perfil, un administrador exporta un CSV con productos y el sistema registra cada acción. Sin saber cómo manejar el sistema de archivos en PHP, estas tareas se convertirán en un dolor de cabeza. Pero si dominas las técnicas básicas, podrás gestionar datos en el servidor con la misma facilidad con la que editas notas en tu móvil.
\n\nEn este artículo, exploraremos el trabajo con archivos en PHP desde lo más simple hasta lo más avanzado. Aprenderás a leer y escribir datos, verificar permisos, subir archivos al servidor y evitar errores comunes. ¡Vamos allá!
\n\nFundamentos del sistema de archivos en PHP
\n\nAntes de meternos en código, repasemos las funciones principales que PHP nos ofrece. Se dividen en tres grupos:
\n\n- \n
- Verificación y metadatos — si el archivo existe, su tamaño, tipo y permisos. \n
- Lectura y escritura — abrir un archivo, leer una línea, escribir datos, cerrarlo. \n
- Gestión de la estructura de archivos — crear, renombrar, eliminar archivos y carpetas. \n
La mayoría de las operaciones con archivos en PHP requieren solo una o dos líneas de código. Pero es importante entender el contexto: dónde está el archivo respecto a tu script, qué permisos tiene el servidor web y cómo manejar los errores.
\n\nVerificar existencia y permisos
\n\nLo primero que debes hacer antes de cualquier operación es asegurarte de que el archivo existe. Para ello, usa file_exists():
<?php\n$filename = 'config.php';\n\nif (file_exists($filename)) {\n echo "¡El archivo $filename existe!";\n} else {\n echo "El archivo no existe";\n}\n?>\n\nPero no basta con que exista. También debes verificar si se puede leer o escribir. Para eso están is_readable() e is_writable():
<?php\n$file = 'data.txt';\n\nif (is_readable($file)) {\n echo "Se puede leer";\n}\nif (is_writable($file)) {\n echo "Se puede escribir";\n}\n?>\n\nEsto es especialmente importante al trabajar con archivos en PHP en producción: los permisos (chmod) suelen ser la causa de errores como «Permission denied».
\n\nLectura de archivos en PHP: tres métodos para cada necesidad
\n\nLeer archivos es la operación más común. PHP ofrece varios enfoques, cada uno ideal para una situación específica.
\n\nMétodo 1: file_get_contents — para archivos pequeños
\n\nSi necesitas leer todo el archivo en una cadena de texto, esta es la mejor opción. Simple, rápido y sin complicaciones:
\n\n<?php\n$content = file_get_contents('readme.txt');\necho $content;\n?>\n\nIdeal para archivos de configuración, plantillas o registros pequeños. Pero si el archivo pesa 200 MB, mejor evítalo: la memoria del servidor te lo agradecerá.
\n\nMétodo 2: fopen + fgets — para archivos grandes
\n\nCuando necesites procesar un archivo CSV enorme o un registro de varios gigabytes, usa la lectura línea por línea. Esto no carga todo el archivo en memoria:
\n\n<?php\n$handle = fopen('bigfile.log', 'r');\nif ($handle) {\n while (($line = fgets($handle)) !== false) {\n // Procesa cada línea individualmente\n echo $line . "<br>";\n }\n fclose($handle);\n} else {\n echo "Error al abrir el archivo";\n}\n?>\n\nRecuerda: siempre cierra el archivo con fclose(). Esto libera recursos del sistema.
Método 3: file() — leer en un array de líneas
\n\nSi cada línea es un registro independiente (por ejemplo, una lista de correos electrónicos), puedes obtener un array directamente:
\n\n<?php\n$lines = file('users.txt');\nforeach ($lines as $line_num => $line) {\n echo "Línea #{$line_num}: " . htmlspecialchars($line) . "<br>";\n}\n?>\n\nEste método es práctico, pero al igual que file_get_contents, carga