¿Cómo eliminar recursivamente un directorio y todo su contenido (archivos + subdirectorios) en PHP?

En PHP, si desea eliminar el archivo o el directorio, tenga en cuenta que no puede eliminar el archivo o el directorio directamente, existe una condición, es decir, hay algunos problemas de seguridad, por lo que la mejor manera de hacerlo es usted primero. tiene que eliminar los datos presentes en el archivo o los subarchivos o directorios presentes en él. Entonces solo usted podrá eliminar el directorio. Y después de eliminar los subdirectorios o archivos, use la función rmdir para eliminar el directorio principal.

Función PHP para eliminar todos los archivos: en el siguiente código, primero pase la ruta del directorio que necesita eliminar. Comprueba si el archivo o directorio que necesita eliminar está realmente presente/existe o no. Si existe, abrirá el archivo y comprobará si hay algo en ese archivo o no. De lo contrario, elimine el directorio usando el directorio rmdir. Pero si hay otros archivos presentes en el directorio, entonces eliminará los archivos usando la función de desvincular, excepto el archivo . y .. archivos que significa los archivos del sistema. Después de eliminar todas las cosas, simplemente use la función rmdir para eliminar el directorio por completo.

Ejemplo:

<?php
  
// Variable to store directory name
// which need to delete
$folder = 'temporary_files';
  
// Get the list of all of file names
// in the folder.
$files = glob($folder . '/*');
  
// Loop through the file list
foreach($files as $file) {
      
    // Check for file
    if(is_file($file)) {
          
        // Use unlink function to 
        // delete the file.
        unlink($file);
    }
}
?>
  • Antes de eliminar los archivos:
  • Después de eliminar los archivos:

Descripción:

  • En este ejemplo anterior, eliminar todos los archivos de una carpeta llamada «temp».
  • Enumere los archivos en este directorio usando la función glob de PHP. La función glob básicamente «encuentra nombres de ruta que coinciden con un patrón determinado». En este caso, use un comodín * (asterisco) para seleccionar todo lo que está en la carpeta «temp».
  • La función glob devuelve una array de nombres de archivo que se encuentran en la carpeta especificada.
  • Recorra esta array.
  • Usando la función is_file para verificar si es un archivo y no un directorio principal o un subdirectorio.
  • Finalmente, use la función de desvincular, que elimina el archivo (si PHP tiene permisos válidos; de lo contrario, se generará un error E_WARNING y la función devolverá un valor booleano FALSO).
  • Eliminar todos los archivos y subdirectorios en un directorio: para eliminar todos los archivos y directorios en todos los subdirectorios, podemos usar la recursividad. Aquí hay un ejemplo de una función PHP recursiva que elimina todos los archivos y carpetas en un directorio específico.

    Ejemplo:

    <?php
      
    // Function to delete all files
    // and directories
    function deleteAll($str) {
          
        // Check for files
        if (is_file($str)) {
              
            // If it is file then remove by
            // using unlink function
            return unlink($str);
        }
          
        // If it is a directory.
        elseif (is_dir($str)) {
              
            // Get the list of the files in this
            // directory
            $scan = glob(rtrim($str, '/').'/*');
              
            // Loop through the list of files
            foreach($scan as $index=>$path) {
                  
                // Call recursive function
                deleteAll($path);
            }
              
            // Remove the directory itself
            return @rmdir($str);
        }
    }
       
    // Function call
    deleteAll('temporary_files'); 
      
    ?>

    Producción:

    • Antes de eliminar el directorio:
    • Después de eliminar el directorio: El directorio se elimina por completo.

    La función verifica si la variable $str representa una ruta a un archivo y luego elimina el archivo usando la función de desvincular. Sin embargo, si $str representa un directorio, obtiene una lista de todos los archivos en dicho directorio antes de eliminar cada uno. Finalmente, elimina el subdirectorio mediante el uso de la función PHP rmdir.

Publicación traducida automáticamente

Artículo escrito por YashKhandelwal8 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *