¿Cómo borrar directorio y archivos con PHP?
En el desarrollo de un sistema siempre llegamos al punto de: ¿Cómo borrar directorio y archivos con PHP?.- Aquí veremos 4 formas de como eliminar archivos y carpetas.
¿Cómo borrar directorio y archivos con PHP?
Tenemos que hacer uso de 2 funciones de PHP: el unlink()
y rmdir()
.
- unlink().- Esta función sirve para eliminar archivos.
- rmdir() .- Esta función está enfocada a eliminar carpetas o directorios dentro de nuestro servidor.
Importante
Es muy importante brindar a las 2 funciones la ruta completa donde se ubica el archivo o directorio en mención para que pueda eliminar sin errores.
Por ejemplo, una ruta sería algo similar a lo siguiente:
/uploads/docpdf/archivo.pdf
Ejemplo de uso de la función unlink()
<?php
unlink('/uploads/docpdf/archivo.pdf');
?>
¿Cómo eliminar directorios en PHP?
Para eliminar directorios, se usa rmdir
. Sin embargo, tenemos que agregar la ruta del directorio a borrar y se debe de verificar que el directorio y el archivo existan, sino, arrojará errores.
<?php
if(file_exists("Ruta_completa_a_la_carpeta")){
rmdir(Ruta_completa_a_la_carpeta);
}
?>
¿Cómo eliminar archivos en PHP?
Para eliminar archivos es preferible validar la existencia del archivo haciendo uso de la función file_exists()
, una vez validado se eliminará el fichero. Esta validación nos previene de posibles errores en PHP.
<?php
if(file_exists("Ruta_completa_del_archivo")){
unlink(Ruta_completa_del_archivo);
}
?>
Borrar una carpeta y su contenido
La sección de la documentación de rmdir de PHP contiene una implementación básica de borrado recursivo: Veamos el ejemplo.
function rrmdir($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (is_dir($dir. DIRECTORY_SEPARATOR .$object) && !is_link($dir."/".$object))
rrmdir($dir. DIRECTORY_SEPARATOR .$object);
else
unlink($dir. DIRECTORY_SEPARATOR .$object);
}
}
rmdir($dir);
}
}
Borrado personalizado de carpetas y archivos
Si deseamos recorrer la carpeta a borrar y solo deseamos borrar algún tipo de extensión de archivos, en este ejemplo veremos solo la eliminación de ficheros .txt
<?php function remove_directory($directory,$patron="*") {
// validamos si el directorio trae slash al final y lo removemos
$directory = ($directory[-1] === "/" || $directory[-1] === "\\") ? substr($directory, 0, -1) : $directory;
// recorremos todos los archivos dentro del directorio
// glob() nos permite buscar archivos por patron ejemplo:
foreach(glob($directory . DIRECTORY_SEPARATOR . $patron) as $file) {
// validamos que sea un directorio
if(is_dir($file)){
// eliminamos directorio
delete_files($file);
}else{
// eliminamos archivo
unlink($file);
}
}
// eliminamos el directorio raiz
rmdir($directory);
}
// eliminams solos los archivos con extension .txt
remove_directory("/home/user1/test/","*.txt");
// eliminams todos los archivos
remove_directory("/home/user1/test");
?>
Por ultimo
Podemos eliminar de varias formas e incluso solo eliminar algún tipo de archivo por extensión y muchas otras opciones.