Eliminar un directorio y sus archivos con PHP
Si alguna vez te has visto en la necesidad de crear un script para eliminar todo el contenido de un directorio ya sean archivos o carpetas y no conseguiste una solución te recomiendo que continues leyendo este artículo.
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.'<br/>';
if (!@unlink($dir.'/'.$current))
deleteDirectory($dir.'/'.$current);
}
}
closedir($dh);
echo 'Se ha borrado el directorio '.$dir.'<br/>';
@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.
Borrar directorio con scandir:
function borra_dir($dir){
$files= scandir($dir);
foreach ($files as $file) {
if($file != ‘.’ && $file != ‘..’){
unlink($dir.’/’.$file);
}
}
rmdir($dir);
}
Gracias me sirvió tremendo el código
Ahora ya se crear un directorio, subir una foto y cambiar el tamaño del archivo, y con está nueva prestación poder borrar un archivo que ya no queramos incluyendo su contenido
P.D.
sigan mi banda de rock en el facebook como:
ramtyoficial
José Aguilar,
Queria agradecerte por todas las cosas que publicas sobre PHP, mas de una vez me han servido muchos tus consejos, sugerencias y programas.
MUCHAS GRACIAS
cuando el directorio es ../../x/ y dentro del directorio x hay archivos
al realizar su funcion elimina todos el contenido aparentemente mas fisicamente queda un elemento en el directorio x
cuando la direccion es ../../directorio a eliminar y su contenido no elimina todo su contenido deja un elemento y el dicrectorio que se piensa eliminar
[…] Fuente: Jose Aguilar […]
[…] Fuente: Jose Aguilar […]