Eliminar un directorio y sus archivos con PHP
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.' '; if (!@unlink($dir.'/'.$current)) deleteDirectory($dir.'/'.$current); } } closedir($dh); echo 'Se ha borrado el directorio '.$dir.' '; @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.