Foros del Web » Programando para Internet » PHP »

Eror al borrar una carpeta con contenido

Estas en el tema de Eror al borrar una carpeta con contenido en el foro de PHP en Foros del Web. 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. @import ...
  #1 (permalink)  
Antiguo 31/12/2010, 13:19
Avatar de 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
  #2 (permalink)  
Antiguo 31/12/2010, 14:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Eror al borrar una carpeta con contenido

El argumento que necesita closedir es el que te devuelve el recurso de opendir, no un string hacia el directorio.

Saludos.
  #3 (permalink)  
Antiguo 31/12/2010, 14:08
Avatar de 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
Respuesta: Eror al borrar una carpeta con contenido

Jo que menso, lo siento es que es la primera vez que trabajo con directorios gracias

Si por fin, por fin, por fin¡¡¡¡ hurrra gracias Gatorv esa era la última parte de mi códigode subida y organizacion de archivos zip a una galeria de imagenes :)

Etiquetas: borrar, contenido, carpetas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:16.