Eliminar un directorio y su contenido en PHP

Estos días en uno de los proyectos del curro (váis a disculpar que esta semana sólo haya publicado citas, pero ha sido una semana dura en lo laboral y peor en lo personal) he tenido que hacer una función que vacíe un directorio completamente y lo borre en PHP. Alguna dirá rmdir y al carajo… pero cualquier usuario de linux/sistemas unix sabe que a ese rmdir le tienes que poner un -r para que borre los archivos que contiene, como no hay -r en PHP lo vamos a crear nosotros:

<?php
    function rmDir_rf($carpeta)
    {
      foreach(glob($carpeta . "/*") as $archivos_carpeta){             
        if (is_dir($archivos_carpeta)){
          rmDir_rf($archivos_carpeta);
        } else {
        unlink($archivos_carpeta);
        }
      }
      rmdir($carpeta);
     }

Explicación: Usamos glob para accedera todo lo que hay en la carpeta y lo recorremos (foreach). Si encontramos un directorio (is_dir nos lo confirma) entonces tiramos de recursivdad y ejecutamos la propia función dentro de si misma. Si no es un directorio, pues se borra el archivo. Al acabar de patear se borra la carpeta, que ahora que está vacía sí puede ser eliminada por rmdir.

Esta funcionalidad irá incluída en mi librería de seguridad DonnieSecure (próximamente en GitHub)

2 comentarios en “Eliminar un directorio y su contenido en PHP

  1. Esta es una reestructura de como podría ser ya que en algunos casos no toma glob
    function rmDir_rf($carpeta){
    $folderCont = scandir($carpeta);
    foreach ($folderCont as $clave => $valor) {
    if(is_dir($folderCont[$clave].’/’.$valor) && $valor!=’.’ && $valor!=’..’){
    rmDir_rf($carpeta.’/’.$folderCont[$clave]);
    }else{
    unlink($carpeta.’/’.$folderCont[$clave]);
    }
    }
    rmdir($carpeta);
    }
    espero y sea de ayuda para algunos.

Replica a Adam Jairo Marquez Rojas Cancelar la respuesta

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.