PHP - Me dice que el directorio no está vacio. Error de PhP o mal calculo ?

   
Vista:
Imágen de perfil de facundo

Me dice que el directorio no está vacio. Error de PhP o mal calculo ?

Publicado por facundo (185 intervenciones) el 12/07/2017 00:57:56
Buenas gente, tengo un problema aver si es algo que desconosco y alguien se da cuenta !!

Cuando borro un producto de la base de datos, lo tengo programado para que tambien me borre sus carpetas con sus imagenes, pero la ultima carpeta no me la deja borrar, me dice que no esta vacia.....

Inicialmente la carpeta "producto1" tiene una imagen y una carpeta "galeria" la cual contiene mas imagenes

Entonces borro el producto de la baes de datos, se borra la carpeta "galeria" con sus imagenes y se borra la imagen de la carpeta "producto1" Lo raro? Me tira ese error, pero voy a ver en la carpeta de ese producto y SI está vacia !!

el codigo es este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$dirPrd = $_GET['nombre'];  // "producto1" (nombre del producto)
$dir="imagenes/productos/$dirPrd";
 
$dp2 = opendir("imagenes/productos/$dirPrd/galeria");
while ($files = readdir($dp2)) {
	$completePath = "imagenes/productos/$dirPrd/galeria/$files";
	if (is_file($completePath)) {
		unlink($completePath);
	}
}
rmdir("imagenes/productos/$dirPrd/galeria");
 
$dp = opendir($dir);
while ($file = readdir($dp)) {
$completePath = "$dir/$file";
	if (is_file($completePath)) {
		unlink($completePath);
	}
}
 
if (empty($dir)) {
	rmdir("imagenes/productos/$dirPrd");
} else{
	echo ' no esta vacio'; // obviamente pongo esto para que no me salga el error, pero voy a ver la carpeta "producto1" y  
   // ESTA VACIA
}


Es raro alguien sabe porque puede ser?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de facundo

Me dice que el directorio no está vacio. Error de PhP o mal calculo ?

Publicado por facundo (185 intervenciones) el 12/07/2017 01:31:14
en la linea 21 :

1
if (empty($dir)) {

saqué ese IF, el resultado es el mismo, osea me tira el error Warning: rmdir(imagenes/productos/asdasd): Directory not empty in C:\xampp\htdocs\integrador\productos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de facundo

Me dice que el directorio no está vacio. Error de PhP o mal calculo ?

Publicado por facundo (185 intervenciones) el 12/07/2017 04:47:10
Les voy a dar una ayuda aver si alguien puede resolver este problema!!! segui probando pero no pude hacerlo andar... probé con esto:

1
2
3
4
5
6
7
8
9
10
$carpeta = scandir('imagenes/productos/asd'); ?>
 
       	<pre>
    <?php	var_dump($carpeta); ?>
    	</pre>
 <?php
 
            rmdir("imagenes/productos/asd/..");
            rmdir("imagenes/productos/asd/.");
            rmdir("imagenes/productos/asd");

lo que me devuelve $carpeta es esto:
1
2
3
4
5
6
7
8
array(3) {
  [0]=>
  string(1) "."
  [1]=>
  string(2) ".."
  [2]=>
  string(7) "galeria"
}

si le doy a actualizar se va "galeria"

y si le doy a actualizar otra vez, $carpeta me devuelve bool(false) y recien ahi me desaparece la carpeta del producto eliminado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Me dice que el directorio no está vacio. Error de PhP o mal calculo ?

Publicado por Juan (43 intervenciones) el 12/07/2017 13:20:02
Buenas facundo

Y si para ver si está vacío o no, pruebas en vez de empty($dir) con la siguiente instrucción:

1
if(count($dir)>0){}

Con esto sabes si hay archivos en el directorio, puede ser que tengas archivos ocultos, con lo cual no te dejará borrar el directorio.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de facundo

Me dice que el directorio no está vacio. Error de PhP o mal calculo ?

Publicado por facundo (185 intervenciones) el 12/07/2017 18:34:46
Hola juan gracias por responder! archivos ocultos no tengo, es la carpeta que se crea cuando añado un producto a la base de datos. Si te fijas arriba. Probe con eso y me sale TRUE (osea me marca que hay archivos) entonces procedi a probar con esto:

1
2
3
4
5
$carpeta = scandir('imagenes/productos/asd'); ?>
 
       	<pre>
    <?php	var_dump($carpeta); ?>
    	</pre>

lo que me devuelve esto:
1
2
3
4
5
6
7
8
array(3) {
  [0]=>
  string(1) "."
  [1]=>
  string(2) ".."
  [2]=>
  string(7) "galeria"
}

ahi me aparece "galeria" cuando en realidad esa carpeta ya fue eliminada, lo que no entiendo es lo de los puntos "." y ".." es como si fuera un directorio. sabes como puedo eliminar esos "directorios" invisibles ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de facundo

Me dice que el directorio no está vacio. Error de PhP o mal calculo ?

Publicado por facundo (185 intervenciones) el 12/07/2017 19:28:04
Solucionado! lo que tenia que hacer era antes de borrarlos cerrar los directorios con closedir()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Revisar política de publicidad