2010-02-05 12 views

Respuesta

9

Para eliminar un directorio y todo este contenido, deberá escribir alguna función de eliminación recursiva, o usar una que ya exista.

Puede encontrar algunos ejemplos en las notas del usuario en la página de documentación de rmdir; por ejemplo, aquí está the one proposed by bcairnsen agosto de 2009 (citando):

<?php 
// ensure $dir ends with a slash 
function delTree($dir) { 
    $files = glob($dir . '*', GLOB_MARK); 
    foreach($files as $file){ 
     if(substr($file, -1) == '/') 
      delTree($file); 
     else 
      unlink($file); 
    } 
    rmdir($dir); 
} 
?> 
+0

$ files = glob ($ dir. '*', GLOB_MARK); -> Por favor, explica esta línea. Gracias. –

+0

La función 'glob' * (ver http://php.net/glob) * devolverá todos los archivos que coinciden con el patrón - y' * 'coincidirá con todos los archivos, lo que significa que glob devolverá una lista de todos los archivos en el directorio apuntado por '$ dir' ;; 'GLOB_MARK' significa" * Agrega una barra oblicua a cada directorio devuelto * " –

+2

Y si desea eliminar solo el contenido de la carpeta, no la carpeta en sí, elimine la línea' rmdir ($ dir); ' – PaulSkinner

0

han intentado de desenlace en el directorio?

 chdir("file"); 
    foreach (glob("N*") as $filename) 
     { 
     unlink($filename); 
     } 

Esto borra los nombres de archivo a partir de N

0

No estoy seguro acerca de Kohana 3, pero que haría uso de un DirectoryIterator()unlink() y en conjunto.

4

Sugiero de esta manera, simple y directo.

$files = glob('your/folder/' . '*', GLOB_MARK); 
    foreach($files as $file) 
    { 
     if (is_dir($file)) { 
      self::deleteDir($file); 
     } else { 
      unlink($file); 
     } 
    } 
Cuestiones relacionadas