Función PHP para borrar directorios

Función PHP para borrar directorios en tu servidor. ¡Fácil y Rápido!

Tag PHP

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:

  1. Abrir el directorio con PHP para poder recorrerlo con opendir().
  2. 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.
  3. Eliminar los ficheros que encontremos con la función php unlink().
  4. Si encontramos un directorio en vez de un fichero lo recorremos, vaciamos y eliminamos con la misma función del snippet: borrar_directorio($directorio).
  5. closedir() para cerrar el directorio abierto, liberar recursos y permitir su posterior eliminación sin errores.
  6. 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.

Sobre el autor

Javier Gómez Redactor en Srcodigofuente.es

Javier Gómez

Ingeniero técnico en informática de gestión. Desarrollador web freelance y profesor de desarrollo web a partes iguales. Testarudo autodidacta, creativo, perfeccionista y alma libre.

Cargando comentarios

Utilizamos "cookies" para información estadística. Si continúas navegando aceptas su uso.