Page 1 sur 1

is_dir() dans un sous dossier toujours faux

Posté : 06 mai 2008, 11:07
par guilt92
Bonjour,

J'essaye de créer ou d'utiliser de l'existant pour parcourir l'ensemble des fichiers d'un répertoire, mais malheureusement cela ne fonctionne pas.
Ce que je ne comprends pas c'est que la fonction is_dir() marche au niveau de la racine, mais si dans ma boucle je fais un nouvel open_dir() d'un sous dossier alors dans ce sous dossier is_dir() me renvoi "faux" tout le temps.

Exemple (nom du dossier et résultat du is_dir):

. : true
.. : true
folder1 : true
subfolder1 : false
subfolder2 : false

J'ai pourtant tout essayé et j'ai donc voulu passer par un script "déjà fait", n'y arrivant pas moi même, et j'ai le même problème.

La fonction que j'ai trouvée sur le net :
function list_dir($name) { 
  if ($dir = opendir($name)) { 
    while(false !== ($file = readdir($dir))) { 
      echo "$file<br>\n"; 
      if(is_dir($file) && !in_array($file, array(".",".."))) { 
        list_dir($file); 
      } 
    } 
    closedir($dir); 
  } 
} 
ne dépasse pas la profondeur de 1 dossier (pas + que mes tentatives...)

Merci d'avance.

Posté : 06 mai 2008, 12:35
par steph29
et un
 list_dir($name.'/'.$file); 
?

Posté : 06 mai 2008, 12:40
par guilt92
J'avais malheureusement essayé, mais cela ne change rien...
Y-a-t il un problème connu lors de l'ouverture de deux opendir en simultané ?

Posté : 06 mai 2008, 12:47
par steph29
logiquement ca doit passe ton $dir n'est pas une variable globale... donc pas d'ecrasement.

$name est en chemin absolu ou relatif?

Posté : 06 mai 2008, 12:56
par guilt92
J'ai placé le fichier ou je fais les test au même endroit que les premiers répertoires donc je lance un list_dir("."); (donc relatif)

j'ai essayé de faire list_dir("http://localhost/projet/dossier_racine") mais ca marche pas, il n'arrive pas à faire l'opendir mais c'est peut etre logique...

Posté : 06 mai 2008, 14:01
par steph29
oui en http://... c'est logique ;)

essaie en chemin absolu: /var/www/... ou c:/wamp/www/... en fonction de ton systeme ;)

Posté : 06 mai 2008, 14:12
par guilt92
Meme comportement en C:\.... : il s'arrete au sous dossier :(

Posté : 06 mai 2008, 14:26
par steph29
la c'est mieux, j'avais oublie pour le is_dir ;)
function list_dir($name) {  
  if ($dir = opendir($name)) {  
    while(false !== ($file = readdir($dir))) {  
    echo $name.'/'.$file."<br>\n";  
		if(is_dir($name.'/'.$file) && !in_array($file, array(".",".."))) {  
			list_dir($name.'/'.$file);  
		}

    }  
    closedir($dir);  
  }  
}

Posté : 06 mai 2008, 14:37
par guilt92
Effectivement c'est mieux !! :)

Ok donc il fallait préciser le chemin "complet"...

Merci beaucoup.