Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/11/2007, 09h21   #1
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2007
Messages : 59
Points : 25
Points : 25
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 :
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.

@+
blastafarie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2007, 10h06   #2
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Les répertoires s'effacent avec une fonction particuliere : http://fr.php.net/manual/fr/function.rmdir.php
__________________
Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2007, 10h39   #3
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2007
Messages : 59
Points : 25
Points : 25
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.
blastafarie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2007, 10h58   #4
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
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.
__________________
Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2007, 12h01   #5
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2007
Messages : 59
Points : 25
Points : 25
Re ratapapa, et merci pour ton aide, mais ca ne fonctionne toujours pas,
j'ai rajouter :
Code :
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.
blastafarie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 18h10   #6
Membre confirmé
 
Inscription : juillet 2007
Messages : 201
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 201
Points : 227
Points : 227
voila tu peux utiliser cette fonction pour supprimer....
Code :
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;
 
}
acirfa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2007, 09h05   #7
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2007
Messages : 59
Points : 25
Points : 25
Merci beaucoup, je devais surment oublier le / à la fin du chemin.
@+
blastafarie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h40.


 
 
 
 
Partenaires

Hébergement Web