Eliminar directorios de forma recursiva en PHP

Eliminar un directorio o un fichero es una tarea muy sencilla de realizar en PHP.

Basta con usar estas funciones:

  • rmdir($fullpath);
  • unlink($fullpath);

Hasta aquí todo bien, pero la primera tiene una gran deficiencia, el directorio ha de estar vacío! Es decir no puede contener ni ficheros ni otros directorios.

Para eso os dejo con esta función que elimina un fichero o directorio, de forma recursiva:

function removeRessource($_target) {//remove the done file
//file?
if( is_file($_target) ) {
if( is_writable($_target) ) {
if( @unlink($_target) ) {
return true;
}
}
return false;
}
//dir recursive
if( is_dir($_target) ) {
if( is_writeable($_target) ) {
foreach( new DirectoryIterator($_target) as $_res ) {
if( $_res->isDot() ) {
unset($_res);
continue;
}
if( $_res->isFile() ) {
removeRessource( $_res->getPathName() );
} elseif( $_res->isDir() ) {
removeRessource( $_res->getRealPath() );
}
unset($_res);
}
if( @rmdir($_target) ) {
return true;
}
}
return false;
}
}

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s