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 fichier récursive d'un dossier


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 12
    Points
    12
    Par défaut [FTP] suppression de fichier récursive d'un dossier
    Bonjour
    je cherche à créer une fonction de suppression récursive avec unlink() et rmdir();

    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
    26
     
    function del_tree ($path) {
      if (is_dir($path))
       {
         if ($dh = @opendir($path)) {
           while (($file = readdir($dh)) !== false) {
               if (($file != '.') && ($file != '..') && ($file != '...'))
                        if (is_dir($path . $file))
                        {
                        del_tree ($path . $file ."/");
                        }
                        else
                        {
                        unlink ($path . $file);
                        }
           }
           closedir($dh);
           }
        rmdir ($path);
       }
      elseif (is_file($path)) 
      {
        unlink ($path);
      }
     
    }
    Elle supprime tous les fichier, mais pas les dossier :-(
    Je sais pas trop comment me débrouiller avec le rmdir();

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Tu peux faire un rmdir à la sortie de ta fonction deltree

    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
    function del_tree ($path) {
      if (is_dir($path))
       {
         if ($dh = @opendir($path)) {
           while (($file = readdir($dh)) !== false) {
               if (($file != '.') && ($file != '..') && ($file != '...'))
                        if (is_dir($path . $file))
                        {
                        del_tree ($path . $file ."/");
                         rmdir ($path.$file);
                        }
                        else
                        {
                        unlink ($path . $file);
                        }
           }
           closedir($dh);
           }
        rmdir ($path);
       }
      elseif (is_file($path)) 
      {
        unlink ($path);
      }
      
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Merci, mais ca n'a pas l'air de marcher
    Peut être parceque le répertoire est ouvert par php.
    J'avais pas pensé à le mettre, car il y avait déjà rmdir ($path); à la fin du fichier

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Oupsss...
    Je viens de comprendre pourquoi celà ne marchait pas :
    http://faq.assistancefree.fr/v1/faq/...xl&rac=354/348
    Free.fr n'autorise pas l'utilisation de rmdir... :-(

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Les sites qui sont en safe_mod généralement autorise les commandes ftp, tu
    peux faire un ftp_rmdir

    http://www.php.net/manual/fr/function.ftp-rmdir.php

    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
    43
    44
    45
    46
     
    <?
        /**
         *    Delete the provided directory and all its contents from the FTP-server.
         *
         *    @param string $path            Path to the directory on the FTP-server relative to the current working directory
         */
        function DeleteDirRecursive ($resource, $path)
        {
            $list = ftp_nlist ($resource, $path);
            if ( empty($nlist) ){
                $list = RawlistToNlist ( ftp_rawlist($resource, $path), $path . ( substr($path, strlen($path) - 1, 1) == "/" ? "" : "/" ) );
            }
            if ($list[0] != $path){
                $path .= ( substr($path, strlen($path)-1, 1) == "/" ? "" : "/" );
                foreach ($list as $item){
                    if ($item != $path.".." && $item != $path."."){
                        DeleteDirRecursive ($item);
                    }
                }
                ftp_rmdir ($resource, $path);
            }
            else {
                ftp_delete ($resource, $path);
            }
        }
     
        /**
         *    Convert a result from ftp_rawlist() to a result of ftp_nlist()
         *
         *    @param array $rawlist        Result from ftp_rawlist();
         *    @param string $path            Path to the directory on the FTP-server relative to the current working directory
         *    @return array                An array with the paths of the files in the directory
         */
        function RawlistToNlist ($rawlist, $path)
        {
            $array = array();
            foreach ($rawlist as $item){
                $filename = trim(substr($item, 55, strlen($item) - 55));
                if ($filename != "." || $filename != ".."){
                    $array[] = $path . $filename;
                }
            }
            return $array;
        }
    ?>

Discussions similaires

  1. Backup FTP : suppression de fichiers
    Par lavazavio dans le forum Administration système
    Réponses: 0
    Dernier message: 23/11/2010, 12h09
  2. suppression des fichiers text dans différents dossiers
    Par guefrachi dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/07/2010, 11h26
  3. [FTP] Suppression de fichiers avec unlink
    Par rodgeur62 dans le forum Langage
    Réponses: 8
    Dernier message: 03/06/2008, 10h45
  4. [FTP] Suppression de dossier récursive
    Par blastafarie dans le forum Langage
    Réponses: 6
    Dernier message: 20/11/2007, 09h05
  5. [FTP] Suppression de fichiers !
    Par Dsphinx dans le forum Langage
    Réponses: 14
    Dernier message: 29/05/2006, 09h39

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