Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/12/2010, 13:19
Avatar de memoadian
memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Eror al borrar una carpeta con contenido

Bueno no se trata exactamente de un error solo que de una forma si se puede y de otra no verán tengo esta funcion.

Código PHP:
Ver original
  1. <?php
  2. function deldir($dir){
  3.     $current_dir = opendir($dir);
  4.     while($entryname = readdir($current_dir))
  5.     {
  6.         if(is_dir($dir."/".$entryname) and ($entryname != "." and $entryname!=".."))
  7.         {
  8.             deldir("${dir}/${entryname}");  
  9.         }
  10.         elseif($entryname != "." and $entryname!="..")
  11.         {
  12.             unlink("${dir}/${entryname}");
  13.         }
  14.     }
  15.     closedir($current_dir);
  16.     rmdir(${'dir'});
  17. }
  18. ?>

funciona bien si la pongo asi

Código PHP:
Ver original
  1. <?php
  2. deldir("read1/juan/12");
  3. ?>

borra toda la subcarpeta 12 de la carpeta juan

pero si le aplico el código de verificacion

Código PHP:
Ver original
  1. <?php
  2. //abro directorio
  3.     $leerCar = opendir("read1/juan/12");
  4.     $carpeta = "read1/juan/12/";       
  5. //leo con un while
  6.     while (($archivo = readdir($leerCar)) !== FALSE)
  7.     {
  8.         if ($archivo != "." && $archivo != "..")
  9.         {
  10. //si hay una subcarpeta borro todo el directorio pues no me sirve
  11.             if(is_dir($carpeta.$archivo) == TRUE)
  12.             {
  13.                 echo "hay subcarpeta dentro de 12<br/>";
  14.                 deldir("read1/naruto/12");
  15.                 break;
  16.             }
  17.             else
  18.             {
  19. //si no hay subcarpeta en 12 imprimo nombres de los archivos
  20.                 echo $carpeta.$archivo."<br/>";
  21.             }
  22.         }
  23.     }
  24. ?>

me borra todo lo que esta dentro de 12 pero no puede borrar la carpeta 12

esto lo que me da es lo siguiente
Código:
Warning: rmdir(read1/naruto/12) [function.rmdir]: Permission denied in C:\xampp... etc.
.
.
.
pensé que era por que el directorio estaba abierto antes de eliminarlo asi que agregue

Código PHP:
Ver original
  1. closedir("read1/naruto/12");
  2. deldir("read1/naruto/12");

o sea un closedir antes de la funcion de borrado y me dio esto

Código:
Warning: closedir() expects parameter 1 to be resource, string given in C:\xampp... etc.

Warning: rmdir(read1/naruto/12) [function.rmdir]: Permission denied in C:\xampp... etc.
.
.
.
no logro entenderlo