¿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
Cómo borrar directorio y archivos con PHP

¿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.

Botón volver arriba