Eliminar un directorio y sus archivos con PHP

Si alguna vez te has visto en la necesidad de crear un script para eliminar todo el contenido de un directorio ya sean archivos o carpetas y no conseguiste una solución te recomiendo que continues leyendo este artículo.

En este artículo vamos a ver como borrar el contenido de un directorio (archivos y carpetas) con una función recursiva que primero elimina los archivos y finalmente el directorio padre de estos archivos.

El script recorre todo el contenido de forma recursiva como si se tratara de recorrer un árbol accediendo a sus hojas para acabar eliminando la raiz.

Vamos a declarar la siguiente función:

function deleteDirectory($dir) {
    if(!$dh = @opendir($dir)) return;
    while (false !== ($current = readdir($dh))) {
        if($current != '.' && $current != '..') {
            echo 'Se ha borrado el archivo '.$dir.'/'.$current.'<br/>';
            if (!@unlink($dir.'/'.$current)) 
                deleteDirectory($dir.'/'.$current);
        }       
    }
    closedir($dh);
    echo 'Se ha borrado el directorio '.$dir.'<br/>';
    @rmdir($dir);
}

La función recibe como único parámetro el directorio a eliminar. Recursivamente se accede a los archivos para eliminarlos y seguidamente eliminar el directorio padre de estos archivos eliminados hasta llegar a la raiz que no es más que el directorio facilitado como parámetro.

A esta función la podemos llamar tal como siguie:

deleteDirectory('data');

En este caso, eliminaríamos todo el contenido de la carpeta «data» y su contenido.

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(10 votos, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

7 respuestas a “Eliminar un directorio y sus archivos con PHP”

  1. Javi ortiz dice:

    Borrar directorio con scandir:

    function borra_dir($dir){
    $files= scandir($dir);
    foreach ($files as $file) {
    if($file != ‘.’ && $file != ‘..’){
    unlink($dir.’/’.$file);
    }
    }
    rmdir($dir);
    }

  2. Gracias me sirvió tremendo el código

    Ahora ya se crear un directorio, subir una foto y cambiar el tamaño del archivo, y con está nueva prestación poder borrar un archivo que ya no queramos incluyendo su contenido

    P.D.
    sigan mi banda de rock en el facebook como:
    ramtyoficial

  3. Rodolfo Bardin dice:

    José Aguilar,

    Queria agradecerte por todas las cosas que publicas sobre PHP, mas de una vez me han servido muchos tus consejos, sugerencias y programas.

    MUCHAS GRACIAS

  4. oswaldo rendon dice:

    cuando el directorio es ../../x/ y dentro del directorio x hay archivos
    al realizar su funcion elimina todos el contenido aparentemente mas fisicamente queda un elemento en el directorio x

  5. oswaldo rendon dice:

    cuando la direccion es ../../directorio a eliminar y su contenido no elimina todo su contenido deja un elemento y el dicrectorio que se piensa eliminar

  6. Eliminar un directorio y sus archivos con PHP | Mataró Activa dice:

    […] Fuente: Jose Aguilar […]

  7. Eliminar un directorio y sus archivos con PHP - Mataró ActivaMataró Activa dice:

    […] Fuente: Jose Aguilar […]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ver más sobre