Muchas veces necesitamos eliminar un directorio, y PHP nos permite utilizar la función rmdir() el único problema es que pone como condición que el directorio esté vacio.
Si no es nuestro caso y queremos borrar todo un directorio independientemente de lo que contenga, podremos hacer uso de esta función recursiva que he creado.
function eliminarDir($carpeta){
foreach(glob($carpeta."/*") as $archivos_carpeta)
{
echo $archivos_carpeta;
if(is_dir($archivos_carpeta)) eliminarDir($archivos_carpeta);
else unlink($archivos_carpeta);
}
rmdir($carpeta);
}
Como se puede observar, después de obtener todos lo elementos del directorio raíz, elimino los archivos y voy pasando de manera recursiva a todos los subdirectorios.
Es posible que algún hosting no permita la ejecución de este comando.








Excelente articulo, estoy en la madrugada componiendo un çscript que me sirva de galeria y necesitaba eliminar automaticamente dsde el panel de usuarios… Me han salvado.
Saludos
Me alegro de que te sirviera
holaa muchisismas gracias , era justo lo que andaba buscando, sencillo y eficientee.. felicidades..
De nada!
y como se hace si no tan vacios?
Esta función en caso de encontrar ficheros los elimina, sino, no podrías eliminar un directorio.
estoy usando esta funcion para borrar unos ficheros, funciona perfecto, pero cuando le agrego la funcion header, esta deja de funcionar. aca dejo el codigo:
function eliminarDir($carpeta){
foreach(glob($carpeta.”/*”) as $archivos_carpeta)
{
echo $archivos_carpeta;
if(is_dir($archivos_carpeta)) eliminarDir($archivos_carpeta);
else unlink($archivos_carpeta);
}
rmdir($carpeta);
}
eliminarDir (“../fotos/albumes/”.$album_nombre);
$baja = “Delete from album where album_nombre=’$album_nombre’”;
mysql_query($baja);
mysql_close();
header(“Refresh:1 url=panel.php”);
Es por el “echo $archivos_carpeta;”
Elimina esa linea del codigo o comentala…
Creo que asi te deberia funcionar…