Leccion 58 de 75 12 min de lectura

Archivos en PHP

PHP ofrece funciones sencillas para trabajar con archivos: leer configuraciones, guardar datos, escribir logs. Aprenderemos las funciones mas comunes para el dia a dia.

Leer archivos

La forma mas simple de leer un archivo completo es con file_get_contents():

PHP
<?php

declare(strict_types=1);

// Leer archivo completo como string
$contenido = file_get_contents('mensaje.txt');
echo $contenido;

// Leer archivo como array de lineas
$lineas = file('lista.txt', FILE_IGNORE_NEW_LINES);

foreach ($lineas as $linea) {
    echo $linea . PHP_EOL;
}

Escribir archivos

Con file_put_contents() puedes guardar contenido en un archivo de forma sencilla:

PHP
<?php

declare(strict_types=1);

// Escribir (sobrescribe si existe)
file_put_contents('nota.txt', 'Hola mundo');

// Añadir al final sin borrar lo anterior
file_put_contents('log.txt', "Nueva linea\n", FILE_APPEND);

// Guardar varias lineas
$datos = ['Linea 1', 'Linea 2', 'Linea 3'];
file_put_contents('datos.txt', implode(PHP_EOL, $datos));

Verificar archivos

Antes de trabajar con un archivo, es buena practica verificar que existe y que tenemos permisos:

PHP
<?php

declare(strict_types=1);

$archivo = 'config.txt';

// ¿Existe el archivo?
if (file_exists($archivo)) {
    echo 'El archivo existe';
}

// ¿Podemos leerlo?
if (is_readable($archivo)) {
    $contenido = file_get_contents($archivo);
}

// ¿Podemos escribir en el?
if (is_writable($archivo)) {
    file_put_contents($archivo, 'nuevo contenido');
}

// Informacion del archivo
echo filesize($archivo);  // Tamaño en bytes
echo filemtime($archivo); // Fecha modificacion (timestamp)

Operaciones con archivos

PHP
<?php

declare(strict_types=1);

// Copiar archivo
copy('original.txt', 'copia.txt');

// Renombrar archivo
rename('viejo.txt', 'nuevo.txt');

// Mover archivo a otra carpeta
rename('archivo.txt', 'carpeta/archivo.txt');

// Eliminar archivo
unlink('temporal.txt');

Trabajar con directorios

PHP
<?php

declare(strict_types=1);

// Crear directorio
mkdir('nueva_carpeta');

// Crear directorios anidados
mkdir('ruta/anidada/profunda', recursive: true);

// Listar archivos de un directorio
$archivos = scandir('mi_carpeta');

foreach ($archivos as $archivo) {
    if ($archivo !== '.' && $archivo !== '..') {
        echo $archivo . PHP_EOL;
    }
}

// Buscar archivos por patron
$phpFiles = glob('*.php');  // Todos los .php
$todos = glob('src/*.txt'); // Todos los .txt en src/

Trabajar con rutas

PHP
<?php

declare(strict_types=1);

$ruta = '/var/www/proyecto/archivo.php';

// Obtener solo el nombre del archivo
echo basename($ruta); // 'archivo.php'

// Obtener solo el directorio
echo dirname($ruta);  // '/var/www/proyecto'

// Obtener la extension
echo pathinfo($ruta, PATHINFO_EXTENSION); // 'php'

// Constantes utiles
echo __FILE__; // Ruta completa del script actual
echo __DIR__;  // Directorio del script actual

Leer archivos grandes

Para archivos muy grandes, es mejor leer linea por linea en lugar de cargar todo en memoria:

PHP
<?php

declare(strict_types=1);

$handle = fopen('archivo_grande.txt', 'r');

if ($handle === false) {
    throw new RuntimeException('No se pudo abrir el archivo');
}

while (($linea = fgets($handle)) !== false) {
    // Procesar cada linea
    echo trim($linea) . PHP_EOL;
}

fclose($handle);

Ejercicios

Ejercicio 1: Guardar y leer nota

Crea un script que guarde el texto "Mi primera nota" en un archivo nota.txt, luego lo lea y muestre por pantalla.

Ver solucion
PHP
<?php

declare(strict_types=1);

// Guardar
file_put_contents('nota.txt', 'Mi primera nota');

// Leer y mostrar
$contenido = file_get_contents('nota.txt');
echo $contenido;

Ejercicio 2: Contar lineas

Crea una funcion contarLineas(string $archivo): int que retorne el numero de lineas de un archivo de texto.

Ver solucion
PHP
<?php

declare(strict_types=1);

function contarLineas(string $archivo): int
{
    $lineas = file($archivo);
    return count($lineas);
}

echo contarLineas('mi_archivo.txt');

Ejercicio 3: Añadir a log

Crea una funcion agregarLog(string $mensaje): void que añada un mensaje con fecha y hora al final de app.log.

Ver solucion
PHP
<?php

declare(strict_types=1);

function agregarLog(string $mensaje): void
{
    $fecha = date('Y-m-d H:i:s');
    $linea = "[$fecha] $mensaje" . PHP_EOL;
    file_put_contents('app.log', $linea, FILE_APPEND);
}

agregarLog('Usuario inicio sesion');

¿Te está gustando el curso?

Tenemos cursos premium con proyectos reales y soporte personalizado.

Descubrir cursos premium