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
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
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
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
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
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
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
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
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
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
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');
¿Has encontrado un error o tienes una sugerencia para mejorar esta leccion?
Escribenos¿Te está gustando el curso?
Tenemos cursos premium con proyectos reales y soporte personalizado.
Descubrir cursos premium