IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Lister tous les répertoires de l'espace web [PHP 5.2]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut Lister tous les répertoires de l'espace web
    Bonjour à tous,

    Je cherche à faire une fonction qui liste tous les répertoires et sous-répertoires de l'espace www, sans afficher les fichiers. Que les dossiers, donc, en partant de la racine, et avec leur chemin.
    J'utilise cette petite fonction récursive :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    function recursive_lect($path){
        $result = array();
        if(!is_dir($path) || !is_readable($path))
        return 0;
        $fd = dir($path);
        while($file = $fd->read()){
            if(($file != ".") && ($file != "..")){
                if(is_dir($path.'/'.$file)){
                	$result = array_merge($result, recursive_lect($path.'/'.$file));
    			}
               	else
    			{
               	$result[] = $path;
    			}
            }
        }
        $fd->close();
        return $result;
    }
    Mais le tableau retourné contient plusieurs fois la même ligne avec le même chemin / même dossier...comme si la boucle en rajoutait une couche à chaque tour. Comment simplifier cela ? Ça gagnerait surement du temps et des ressources...
    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    La SPL propose tout ce qu'il faut pour parcourir des dossiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $folder = './';
    $dossier 	= new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder),true);
    $compteur 	= 0;
    foreach($dossier as $file)
    {
    	if($file->isDir())
    	{
    			echo str_repeat('-',$dossier->getDepth()).' '.$file->getFilename().'<br />';
    	}
    }
    L'exemple si dessus liste tous les dossiers présent dans le dossier précisé par $folder
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Bonjour et merci de ta réponse,

    J'ignorais ce qu'était la SPL, alors, déjà, merci du tuyau.
    Je vais éplucher la doc.
    Mais déjà, avec ton code, brut de décoffrage, j'obtiens :

    Fatal error: Trying to clone an uncloneable object of class RecursiveIteratorIterator in D:\EasyPHP5.2.10\www....
    sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dossier 	= new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder),true);
    J'ai essayé en passant ../ , ou ./ et même $_SERVER['DOCUMENT_ROOT']

    Y-a-t-il quelque chose à instancier ? A installer ? Je suis en PHP 5.2.

    EDIT : Erreur résolue avec l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ini_set('zend.ze1_compatibility_mode', 0);
    Maintenant je vais voir comment afficher les chemins de chaque dossiers.
    Mais déjà c'est une super piste !

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Cette erreur provient généralement de la directive zend.ze1_compatibility_mode qui est à On dansle php.ini

    C'est fortement conseillé de ne pas l'utiliser et de passer à du vrai développement php5

    -- Edit --
    J'avais pas vu ton édition ^^

    Voir la doc pour toutes les possibilité des objets parcourus : http://www.php.net/manual/fr/class.d...ryiterator.php,

    dans ton cas , getPath ou getPathName devrait faire l'affaire.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    C'est fortement conseiller de ne pas l'utiliser et de passer à du vrai développement php5


    Peux-tu préciser ?

  6. #6
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Oui super : Je suis dans la doc et il y a tout ce dont j'ai besoin.
    Merci pour ton aide précieuse.
    Bonne journée !

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Cette directive est utiliser pour garder une compatibilité entre php4 et php5 au niveau du passage des objets en argument qui sont passer par valeur au lieu d'être passé par référence comme c'est le cas depuis php5.

    Donc si tu n'as pas de vieux code php4 qui nécessite cette directive tu peux (dois) la désactiver
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Lister tous les répertoires récursivement
    Par TakingCTRL dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 15/08/2013, 08h21
  2. Lister tous les répertoires d'un serveur
    Par r0seBa dans le forum C#
    Réponses: 3
    Dernier message: 07/11/2011, 16h04
  3. Lister tous les répertoires virtuelles
    Par toxine7777 dans le forum ASP
    Réponses: 1
    Dernier message: 13/10/2010, 14h14
  4. [Tableaux] Lister tous les répertoires dans une liste
    Par cdevl32 dans le forum Langage
    Réponses: 10
    Dernier message: 01/03/2008, 18h20
  5. Lister tous les documents d'un répertoire
    Par Jiyuu dans le forum VB.NET
    Réponses: 7
    Dernier message: 22/09/2007, 17h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo