Taller > PHP > Manejo de archivos
Eliminar Archivos en PHP
En PHP, aunque no existe una palabra clave específica para “eliminar” o una función llamada delete(), se utiliza la función unlink() para eliminar archivos del sistema de archivos. Esta función es similar a la función unlink en Unix/C.
Si la operación de eliminación no se completa con éxito, PHP devuelve false y genera un mensaje de advertencia (E_WARNING).
Sintaxis de la función unlink()
unlink(string $filename, ?resource $context = null): bool
El parámetro obligatorio es una cadena que hace referencia al archivo que se desea eliminar. Si el archivo se elimina correctamente, devuelve true, de lo contrario, false.
Ejemplo: Eliminar un archivo
Aquí un ejemplo sencillo de cómo eliminar un archivo usando la función unlink() en PHP:
<?php
$archivo = "mi_archivo.txt";
if (unlink($archivo)) {
echo "El archivo fue eliminado exitosamente.";
} else {
echo "El archivo no pudo ser eliminado.";
}
?>
En este caso, el código intenta eliminar el archivo mi_archivo.txt. Si la operación es exitosa, se imprime un mensaje confirmando la eliminación. Si no es posible eliminar el archivo, se muestra un mensaje de error.
Eliminar un enlace simbólico
Además de eliminar archivos regulares, unlink() también puede eliminar un enlace simbólico (symlink) a un archivo. Sin embargo, es importante señalar que al eliminar un enlace simbólico, el archivo original no se elimina.
¿Qué es un enlace simbólico?
Un enlace simbólico es un tipo de acceso directo a un archivo existente. En sistemas Windows, se puede crear un enlace simbólico a un archivo usando el comando mklink, y en sistemas Linux, se utiliza el comando ln.
Ejemplo: Eliminar un enlace simbólico
Primero, vamos a crear un enlace simbólico en PHP con la función symlink(). Luego, eliminaremos este enlace:
<?php
$archivo_objetivo = 'archivo.txt';
$enlace = 'enlace_simbolico.lnk';
// Crear el enlace simbólico
symlink($archivo_objetivo, $enlace);
echo "Enlace simbólico creado: " . readlink($enlace);
?>
Después de ejecutar el código, se crea un enlace simbólico llamado enlace_simbolico.lnk que apunta al archivo archivo.txt. Luego, podemos eliminar este enlace de la siguiente manera:
<?php
// Eliminar el enlace simbólico
if (unlink("enlace_simbolico.lnk")) {
echo "El enlace simbólico fue eliminado.";
} else {
echo "No se pudo eliminar el enlace simbólico.";
} ?>
Al ejecutar este código, el enlace simbólico se eliminará, pero el archivo original (archivo.txt) permanecerá intacto.
Renombrar un archivo en PHP
Además de eliminar archivos, PHP también permite renombrar archivos a través de la función rename().
Sintaxis de la función rename()
rename(string $from, string $to, ?resource $context = null): bool
Esta función intenta renombrar un archivo de $from a $to. Si $to ya existe, será sobrescrito. También es posible mover un archivo entre directorios con esta función.
Ejemplo 1: Renombrar un archivo
El siguiente código renombra el archivo archivo.txt a nuevo_archivo.txt:
<?php
if (rename("archivo.txt", "nuevo_archivo.txt")) {
echo "El archivo fue renombrado exitosamente.";
} else {
echo "El archivo no pudo ser renombrado.";
}
?>
Si el archivo es renombrado exitosamente, se imprimirá un mensaje confirmando la operación.
Ejemplo 2: Renombrar un archivo copiando y eliminando el original
Otra forma de renombrar un archivo es copiarlo con un nuevo nombre y luego eliminar el original. Aquí un ejemplo:
<?php
// Copiar el archivo con un nuevo nombre
if (copy("archivo.txt", "nuevo_archivo.txt")) {
// Eliminar el archivo original
if (unlink("archivo.txt")) {
echo "Archivo renombrado exitosamente.";
} else {
echo "No se pudo eliminar el archivo original.";
}
} else {
echo "No se pudo copiar el archivo.";
}
?>
En este ejemplo, primero copiamos el archivo archivo.txt con el nuevo nombre nuevo_archivo.txt y luego eliminamos el archivo original. Esto logra el mismo efecto que rename() pero en dos pasos.
Conclusión
PHP ofrece herramientas poderosas para manipular archivos en el sistema de archivos, como las funciones unlink() y rename(). Estas permiten eliminar y renombrar archivos de manera eficiente, ya sea en operaciones simples o complejas como el manejo de enlaces simbólicos.