identification de la racine

PtitGénie
Invité n'ayant pas de compte PHPfrance

22 sept. 2008, 16:48

Bonjour à tous !

Je veux lister tous les fichiers et dossiers de mon serveur.
J'ai donc placé un fichier "lister.php" à la racine, avec ce code :
<? 
function ScanDir2($Directory){ 
echo "Dir : ".$Directory; 
  
if (is_dir($Directory) && is_readable($Directory)) { 
  
    closedir($MyDirectory); 
  
    if($MyDirectory = opendir($Directory))  { 
  
    while (false !== ($entry = readdir($MyDirectory))) { 
        if (is_dir($Directory."/".$Entry)) { 
            if (($Entry != ".") && ($Entry != "..")) { 
        echo "<li><b>Repertoire</b>: $Directory/$Entry</li>\n"; 
        echo "<ul>"; 
        ScanDir($Directory."/".$Entry); 
        echo "</ul>"; 
  
            } 
        } 
        else { 
        echo "<li><b>Fichier</b>: $Directory/$Entry </li>\n"; 
  
            if (eregi("(\.html)|(\.htm)",$Entry)){ 
        $MetaTags = get_meta_tags($Directory."/".$Entry); 
  
                } 
            } 
        } 
    closedir($MyDirectory); 
} 
  
}else{echo "erreur";} 
  
} 
  
ScanDir2("./"); 
  
?> 
Seulement il ne reconnaît pas le "./", ni même le "." tout court pour dire "à la racine".
Il ne passe pas la première condition et affiche donc l'écho "erreur".

Mais lorsque je met un nom de dossier existant à cette racine, genre ScanDir2("truc/"), cela va parfaitement fonctionner et lister tous les fichiers de ce dossier en particulier o_O

Merci d'avance, si quelqu'un a une idée...

Mammouth du PHP | 19672 Messages

22 sept. 2008, 22:34

Si ce fichier est à la racine, essaye comme ceci :
//...
ScanDir2(realpath(dirname(".")));
?>
dirname() va récupérer le répertoire qui le contient, et realpath() le chemin absolu de tout ça sur la machine.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: