Ficheros en PHP
PHP ofrece múltiples funciones y métodos para trabajar con ficheros, permitiendo leer, escribir y manipular archivos locales de manera sencilla. Este acceso es fundamental para tareas como guardar logs, configurar la aplicación, procesar datos importados o generar informes.
PHP distingue entre ficheros de texto (legibles) y ficheros binarios (imágenes, audio, PDF, etc.) y proporciona herramientas para manejar ambos.
Operaciones básicas con ficheros
Crear y escribir en un fichero
La forma más sencilla de crear un fichero y escribir contenido es usando file_put_contents():
<?php
$contenido = "Hola mundo\nBienvenido a PHP!";
file_put_contents("archivo.txt", $contenido);
?>
Si el fichero no existe, PHP lo crea automáticamente. Si existe, se sobrescribe por defecto.
Para añadir contenido sin sobrescribir, se puede usar el tercer parámetro FILE_APPEND:
<?php
file_put_contents("archivo.txt", "Otra línea\n", FILE_APPEND);
?>
Leer un fichero completo
file_get_contents() permite leer el contenido completo de un fichero en memoria:
<?php
$texto = file_get_contents("archivo.txt");
echo $texto;
?>
Leer un fichero línea a línea
Cuando los ficheros son grandes, es mejor leer línea por línea usando fopen() y fgets():
<?php
$handle = fopen("archivo.txt", "r"); // "r" = modo lectura
if ($handle) {
while (($linea = fgets($handle)) !== false) {
echo $linea;
}
fclose($handle);
} else {
echo "No se pudo abrir el fichero.";
}
?>
Comprobar existencia y permisos
Antes de leer o escribir, conviene verificar que el fichero existe y que tiene permisos adecuados:
<?php
if (file_exists("archivo.txt") && is_readable("archivo.txt")) {
echo "El fichero existe y se puede leer.";
} else {
echo "Fichero no disponible o sin permisos de lectura.";
}
?>
Trabajar con ficheros binarios
Para ficheros binarios, como imágenes o PDFs, es recomendable usar fopen() con modos rb (lectura binaria) y wb (escritura binaria):
<?php
$origen = fopen("imagen.jpg", "rb");
$destino = fopen("copia_imagen.jpg", "wb");
while (!feof($origen)) {
$buffer = fread($origen, 1024); // leer 1024 bytes por iteración
fwrite($destino, $buffer);
}
fclose($origen);
fclose($destino);
?>
Eliminar y renombrar ficheros
PHP permite manipular la estructura de ficheros con funciones como unlink() y rename():
<?php
// Eliminar un fichero
unlink("archivo.txt");
// Renombrar un fichero
rename("copia_imagen.jpg", "imagen_backup.jpg");
?>
Directorios y rutas
PHP también permite trabajar con directorios y rutas:
<?php
// Crear directorio
mkdir("mi_directorio");
// Listar archivos de un directorio
$archivos = scandir("mi_directorio");
print_r($archivos);
// Comprobar si es directorio
if (is_dir("mi_directorio")) {
echo "Existe y es un directorio";
}
?>
Manejo de errores y buenas prácticas
- Siempre cerrar ficheros abiertos con
fclose()para liberar recursos. - Comprobar existencia y permisos antes de leer o escribir.
- Evitar cargar ficheros grandes enteros en memoria; usar lectura por bloques o línea a línea.
- Sanitizar rutas cuando provienen de entradas de usuario para evitar vulnerabilidades.
- Utilizar funciones como
file_get_contents()yfile_put_contents()para operaciones simples yfopen()/fread()/fwrite()cuando se requiere mayor control.