RMDIR recursivo en PHP
Para eliminar directorios con php se utiliza la función rmdir()
, el problema es que esa función no permite borrar carpetas que contengan algo, ya sea otras carpetas vacías o archivos.
Se pueden hacer funciones para eliminar carpetas y su contenido utilizando sólo php, de hecho en el manual de rmdir en php.net se pueden ver algunas en los comentarios, pero no es eso lo que me interesa. Lo que voy a explicar es cómo hacerlo utilizando comandos del sistema (en unix, los de windows no tengo ni idea).
La cosa es sencilla, para ejecutar comandos del sistema se utiliza la función exec()
de PHP.
Por ejemplo:
echo '<ol>';
if(exec('rm -frv /el/directorio/a/borrar/',$salida)){
foreach($salida as $line){
echo '<li>'.$line.'</li>';
}
}else{
echo '<li>Error al eliminar archivos</li>';
}
echo '</ol>';
Como se ve, he utilizado el comando rm con las opciones -frv
, la f
es para forzar (ignora archivos inexistentes), la r
para que sea recursivo y la v
(de verbose) para que explique lo que esta haciendo. Si queréis, en la wikipedia hay mas información sobre el comando rm
.