Manejo de Archivos en PHP

Objetivos de Aprendizaje
  • Aprender a leer y escribir archivos en PHP
  • Comprender los diferentes modos de apertura de archivos
  • Manejar permisos y errores en operaciones con archivos
  • Trabajar con archivos CSV y realizar operaciones avanzadas

Apertura y Lectura de Archivos

PHP proporciona varias funciones para trabajar con archivos. La función básica para abrir un archivo es fopen(), que requiere dos parámetros principales: la ruta del archivo y el modo de apertura.

Modo Descripción Crea archivo Sobrescribe
r Solo lectura No No
w Solo escritura
a Añadir al final No
r+ Lectura y escritura No No
lectura_archivo.php
PHP Básico

<?php
// Abrir archivo en modo lectura
$archivo = fopen('datos.txt', 'r');

// Verificar si se abrió correctamente
if ($archivo) {
    // Leer línea por línea
    while (!feof($archivo)) {
        $linea = fgets($archivo);
        echo $linea . "<br>";
    }
    
    // Cerrar el archivo
    fclose($archivo);
} else {
    echo "Error al abrir el archivo";
}
?>
                        

Escritura de Archivos

PHP ofrece varias funciones para escribir en archivos. Las más comunes son fwrite() y file_put_contents().

escritura_archivo.php
PHP Básico

<?php
// Método 1: Usando fwrite()
$archivo = fopen('nuevo.txt', 'w');
$texto = "Este es un texto de ejemplo.\n";
fwrite($archivo, $texto);
fclose($archivo);

// Método 2: Usando file_put_contents()
$contenido = "Este es otro texto de ejemplo.";
file_put_contents('otro.txt', $contenido);

// Añadir contenido al final del archivo
file_put_contents('otro.txt', "\nNueva línea", FILE_APPEND);
?>
                        
Importante

Siempre verifica los permisos de escritura y asegúrate de cerrar los archivos después de usarlos para liberar recursos del sistema.

Trabajando con CSV

Los archivos CSV (Valores Separados por Comas) son muy comunes para manejar datos tabulares. PHP tiene funciones específicas para trabajar con este formato.

manejo_csv.php
PHP Intermedio

<?php
// Crear un archivo CSV
$archivo = fopen('usuarios.csv', 'w');

// Escribir encabezados
$encabezados = ['Nombre', 'Email', 'Edad'];
fputcsv($archivo, $encabezados);

// Escribir datos
$datos = [
    ['Juan', 'juan@email.com', '25'],
    ['María', 'maria@email.com', '30']
];

foreach ($datos as $fila) {
    fputcsv($archivo, $fila);
}

fclose($archivo);

// Leer archivo CSV
$archivo = fopen('usuarios.csv', 'r');

while ($fila = fgetcsv($archivo)) {
    print_r($fila);
    echo "<br>";
}

fclose($archivo);
?>
                        

Manejo de Directorios

PHP también proporciona funciones para trabajar con directorios y obtener información sobre archivos.

directorios.php
PHP Intermedio

<?php
// Listar archivos en un directorio
$directorio = './archivos';

if (is_dir($directorio)) {
    $archivos = scandir($directorio);
    
    foreach ($archivos as $archivo) {
        if ($archivo != '.' && $archivo != '..') {
            $ruta_completa = $directorio . '/' . $archivo;
            
            echo "Archivo: " . $archivo . "<br>";
            echo "Tamaño: " . filesize($ruta_completa) . " bytes<br>";
            echo "Última modificación: " . date("Y-m-d H:i:s", filemtime($ruta_completa)) . "<br><br>";
        }
    }
}
?>
                        

Ejercicio Práctico

Crea un sistema de registro de logs que:

  1. Escriba mensajes en un archivo log.txt con fecha y hora
  2. Permita diferentes niveles de log (INFO, ERROR, WARNING)
  3. Mantenga un límite de tamaño del archivo
  4. Rote los logs cuando se alcance el límite
Sugerencia

Utiliza date() para el timestamp, filesize() para verificar el tamaño y rename() para rotar los archivos.