En PHP, si quieres borrar un directorio, por seguridad, primero debes borrar todo su contenido, ya sean ficheros u otros directorios. Para este cometido necesitas una función recursiva que te permita ir borrando los ficheros de cada directorio en su interior y sus ficheros.
A continuación puedes ver una función especialmente creada para borrar directorios con PHP y que, antes de proceder a borrar el directorio deseado, comprobará si contiene algún tipo de información (ficheros o directorios) y la eliminará.
<?php function borrar_directorio($dirname) { //si es un directorio lo abro if (is_dir($dirname)) $dir_handle = opendir($dirname); //si no es un directorio devuelvo false para avisar de que ha habido un error if (!$dir_handle) return false; //recorro el contenido del directorio fichero a fichero while($file = readdir($dir_handle)) { if ($file != "." && $file != "..") { //si no es un directorio elemino el fichero con unlink() if (!is_dir($dirname."/".$file)) unlink($dirname."/".$file); else //si es un directorio hago la llamada recursiva con el nombre del directorio borrar_directorio($dirname.'/'.$file); } } closedir($dir_handle); //elimino el directorio que ya he vaciado rmdir($dirname); return true; } ?>
Borrado del directorio con PHP paso a paso
Para poder comprender que hace esta función necesitas saber qué es una función recursiva y cómo funciona. Si no te apetece leerte la explicación larga de la wikipedia, comentar por encima que se trata de una función de programación que se llama a si misma una o más veces.
Por otra parte, vamos a comentar cuáles son las funciones principales utilizadas en este snippet php:
- Abrir el directorio con PHP para poder recorrerlo con opendir().
- Recuperar uno a uno los items que contiene con la función php readdir(). Esta función, además, nos devolverá false si ya no hay más elementos que leer.
- Eliminar los ficheros que encontremos con la función php unlink().
- Si encontramos un directorio en vez de un fichero lo recorremos, vaciamos y eliminamos con la misma función del snippet: borrar_directorio($directorio).
- closedir() para cerrar el directorio abierto, liberar recursos y permitir su posterior eliminación sin errores.
- Eliminar el directorio con la función PHP específica para ello rmdir($dirname).
Conclusión de borrado de directorios en PHP
Espero que esta función php para borrar directorios te haya sido de utilidad y que la integres a partir de ahora en tus recursos de utilidades. Este tipo de funciones componen en conjunto un set perfecto de utilidades de las cuales yo, si fuera tú, añadiría a una clase del estilo FileHelpers junto a otras relacionadas.
Por último, si has llegado ha leer hasta aquí ¡gracias! y si te ha gustado, ayudanos compartiendo esta publicación para que llegue a otros programadores web y podamos seguir creando contenido útil y gratuito.