par
ghalaad » 31 janv. 2007, 07:00
C'est un problème très connu avec php sous windows : is_dir() ne fonctionne pas correctement. Le fichier n'est pas détecté comme étant de type "répertoire" mais comme un fichier.
Ce qu'il y a de perturbant c'est que ça marche sur le premier dossier lu après "." et ".." mais pas sur les autres

Je m'y suis cassé les dents plusieurs fois. J'uitilisel e code que tu as posté (la fonction recursive "traverse_dir()") mais je rencontre un souçaï avec chez free.
Sur un nunux perso ça marche très bien, sur ma page perso de free (
http://ghalaad.z.free.fr/ ) ça pinaille sur les fork quand il y a un appel à opendir()...
Et là ...
je suis perdu
function Listing($dir)
{
/* ça foire ici */
if ($dh = @opendir($dir))
{
while(($file = @readdir($dh)) !== false)
{
if (!preg_match('/^\./s', $file) && $file != ".." && $file !=".")
{
if ((is_dir($dir . $file) || !ereg('\.', $file)))
{
$newdir = $dir . $file . '/';
@chdir($newdir);
$t[$newdir][] = Listing($newdir);
if(!is_null($t[$newdir]))
{
asort($t[$newdir]);
}
}
else
{
$t[] = $file;
}
}
}
}
if ($dir != "./")
{
chdir('..');
//closedir($dh);
}
return $t;
}
L'erreur renvoyée est :
Fatal error : opendir(./demos/) [... code ajax ...]: failed to open dir : No such file or directory in /mnt/121/sdc/5/c/ghalaad.z/ajax_server.php on line 41 ...
Line 41 qui correspond à opendir().
Je sais que j'aurai dû ouvrir un nouveau sujet mais les deux problèmes sont reliés car la même fonction est utilisée ...
Merci à tous

C'est un problème très connu avec php sous windows : is_dir() ne fonctionne pas correctement. Le fichier n'est pas détecté comme étant de type "répertoire" mais comme un fichier.
Ce qu'il y a de perturbant c'est que ça marche sur le premier dossier lu après "." et ".." mais pas sur les autres :x Je m'y suis cassé les dents plusieurs fois. J'uitilisel e code que tu as posté (la fonction recursive "traverse_dir()") mais je rencontre un souçaï avec chez free.
Sur un nunux perso ça marche très bien, sur ma page perso de free ( http://ghalaad.z.free.fr/ ) ça pinaille sur les fork quand il y a un appel à opendir()...
Et là ...
je suis perdu :(
[php]function Listing($dir)
{
/* ça foire ici */
if ($dh = @opendir($dir))
{
while(($file = @readdir($dh)) !== false)
{
if (!preg_match('/^\./s', $file) && $file != ".." && $file !=".")
{
if ((is_dir($dir . $file) || !ereg('\.', $file)))
{
$newdir = $dir . $file . '/';
@chdir($newdir);
$t[$newdir][] = Listing($newdir);
if(!is_null($t[$newdir]))
{
asort($t[$newdir]);
}
}
else
{
$t[] = $file;
}
}
}
}
if ($dir != "./")
{
chdir('..');
//closedir($dh);
}
return $t;
}[/php]
L'erreur renvoyée est :
[quote]Fatal error : opendir(./demos/) [... code ajax ...]: failed to open dir : No such file or directory in /mnt/121/sdc/5/c/ghalaad.z/ajax_server.php on line 41 ...[/quote]
Line 41 qui correspond à opendir().
Je sais que j'aurai dû ouvrir un nouveau sujet mais les deux problèmes sont reliés car la même fonction est utilisée ...
Merci à tous :)