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 :

[FTP] Suppression de dossier récursive


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Par défaut [FTP] Suppression de dossier récursive
    Re bonjour le forum des developpeurs
    J'ai un petit soucis avec la supression de dossier.
    J'ai une fonction récursive qui par un dossier et ses sous dossiers afin de tout supprimer. Les dossier et les fichiers présent ont été créés par un script php aussi. Les fichier sont bien supprimés mais il n'efface pas les dossiers.
    Voici ma fonction :
    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
    21
    22
    23
    24
    25
     
    //Fonction de supression de dossier et de sous dossier
    function suppr_dir($D)
    {
      //Parcour le dossier du client
      $Dossier = $D;
     
      if (is_dir($Dossier))
      {
        if ($dh = opendir($Dossier))
         {
          while (false != ($file = readdir($dh)))
             {
    	if (is_dir($Dossier.'/'.$file)) //Si dossier apel récursif
    	{suppr_dir($Dossier.'/'.$file);}
    	 else
    	 {unlink($Dossier.'/'.$file);}			
             }
           closedir($dh);
          } 
     
    //Supression du dossier
    rmdir($Dossier);
       }
     }
    Et ce script ne me renvoye aucun message d'erreur.
    J'arrive pourtant à renommer les dossier avec rename, d'allieurs est ce qu'on peut renommer un dossier comme çà si i ln'est pas vide?? je n'est pas encore fait le test.

    Si quelqu'un avait un solution pour éviter que j'ai à les supprimer manuellement.

    @+

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    Les répertoires s'effacent avec une fonction particuliere : http://fr.php.net/manual/fr/function.rmdir.php

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Par défaut
    Citation Envoyé par ratapapa Voir le message
    Les répertoires s'effacent avec une fonction particuliere : http://fr.php.net/manual/fr/function.rmdir.php
    La fonction se termine bien par aprés avoir fermer le dossier.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    Au temps pour moi. Par contre si tu es dans un environnement de type windows en particulier, il te faut un test supplémentaire pour ne pas traiter le cas "." et "..".
    En effer readdir les considère comme deux répertoires, et le script boucle à l'infini.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Par défaut
    Re ratapapa, et merci pour ton aide, mais ca ne fonctionne toujours pas,
    j'ai rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(($file!='.') && ($file!='..') && (!ereg("^.ht",$file)))
    avant de verifier si il s'agit d'un dossier ou nom et rien.
    En revanche rename fonctionne bien même si il ya des fichiers présents dans le dossier. Et la fonction efface également les fichiers envoyer par ftp.
    Donc tout est bon sauf que les dossiers reste :s

    Mais comme je fais des envoye automatique par ftp depuis mon pc, je peut ajouter une fonction qui vérifie la valider du dossier. Mais il serait plus pratique et mon bidoullieur de le suprimmez en même tant que le reste.

    J'attend votre aide avec impatience.

  6. #6
    Membre expérimenté
    Inscrit en
    Juillet 2007
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 201
    Par défaut
    voila tu peux utiliser cette fonction pour supprimer....
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    // > permet de supprimer un dossier meme s'il n'est pas vide. Le script explore tout le contenu et le supprime
    // > avant de supprimer le dossier.
    // >> Parametres d'entree :
    // > $dir : STRING / chemin d'acces au dossier a supprimer
    // >> Parametre de sortie : BOOLEEN / TRUE si dossier supprime, FALSE en cas d'erreur
    function advRmDir( $dir )
    {
     
     // ajout du slash a la fin du chemin s'il n'y est pas
     if( !preg_match( "/^.*\/$/", $dir ) ) $dir .= '/';
     
     // Ouverture du repertoire demande
     $handle = @opendir( $dir );
     
     // si pas d'erreur d'ouverture du dossier on lance le scan
     if( $handle != false )
     {
     
      // Parcours du repertoire
      while( $item = readdir($handle) )
      {
       if($item != "." && $item != "..")
       {
        if( is_dir( $dir.$item ) )
         advRmDir( $dir.$item );
        else unlink( $dir.$item );
       }
      }
     
      // Fermeture du repertoire
      closedir($handle);
     
      // suppression du repertoire
      $res = rmdir( $dir );
     
     }
     else $res = false;
     
     return $res;
     
    }

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

Discussions similaires

  1. [FTP] Suppression d'un dossier
    Par N3mesis98 dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 05/07/2014, 16h57
  2. [C# et FTP] Suppression de dossiers non vides
    Par Ikki_2504 dans le forum C#
    Réponses: 2
    Dernier message: 09/02/2011, 22h32
  3. Réponses: 4
    Dernier message: 24/09/2007, 00h44
  4. [FTP] suppression d'un dossier en recursif
    Par Joeleclems dans le forum Langage
    Réponses: 2
    Dernier message: 27/11/2006, 10h20
  5. [FTP] Suppression d'un dossier
    Par Belenos dans le forum Langage
    Réponses: 5
    Dernier message: 06/07/2006, 00h19

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