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 :

Supprimer dossier non-vide


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 38
    Points : 26
    Points
    26
    Par défaut Supprimer dossier non-vide
    Bonsoir, je suis en train de faire une fonction de suppression de dossier.

    Celle-ci doit permettre de supprimer un dossier qui n'est pas vide (qui contient des dossiers, sous-dossiers et fichiers etc...).
    J'essai donc avec une 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 effacer($dir)
    {
      if($objet = glob($dir."/*"))
      {
    	foreach($objet as $obj)
    	{
    	  if(is_dir($obj))
    	  {
    		effacer($obj);
    	  }
    	  else
    	  {
    		unlink($obj);
    	  }
    	}
      }
      rmdir($dir);
    }
     
    effacer('export/');

    Seulement, cela ne fonctionne pas, j'ai un joli "Warning: rmdir(export/): Permission denied..."


    Voici comment cela fonctionne :

    J'ai un script export.php (celui dans lequel est la fonction), qui va créer le dossier export/ ainsi que des dossiers et des fichiers textes à l'intérieur.
    Seulement, je dois le vider à chaque lancement du fichier export.php, c'est pour cela que j'utilise cette fonction qui va tout supprimer, avant que le script ne recréé le dossier export/ et tout ce qui va à l'intérieur.

    C'est donc le script qui détermine les droits de chaque fichier/dossier.

    export.php est d'origine en 777 et export/ est en 777.
    Les autres dossiers et fichiers créés par export.php sont laissés en droits par défaut, et je viens de m'appercevoir que ce n'est pas 777, mais 755 pour les dossiers et 644 pour les fichiers !


    Peut-être que le problème vient de là ?


    Merci d'avance.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Tu ne serais pas chez Free par hasard ? Car Free a supprimé la fonction rmdir().

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Merci de ta réponse.

    Mais non, je ne suis pas chez Free, je suis chez Llord, et à ma connaissance ils n'ont supprimé aucun fonction. Donc tout devrais fonctionner.

  4. #4
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, je n'ai jamais fait ce que tu cherches à faire, c'est juste pour faire avancer le chimilimili...

    Il n'y aurait une histoire de vérifier s'il s'agit de . et .. comme dossier : Dans ce cas on ne peut pas les supprimer :

    En espérant que cette remarque puisse t'aider ;-)

  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Merci, mais ça ne le fait pas avancer le chimililiblik !

    En fait, les . et .. je pense que tu veux dire par exemple ./export/ et ../export/, cela situe seulement le chemin d'accès au répertoire (ici export) dans des dossiers précédents.

  6. #6
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Non, je ne parle pas des répertoires précédents : si tu fais le listing des dossiers/fichiers contenus dans un répertoire donné, tu t'apercevras qu'il y a un début de liste . et ..

    Pour preuve, regarde l'exemple n°2 à cette adresse : http://fr3.php.net/manual/fr/function.readdir.php

  7. #7
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Merci de ta réponse, mais je ne crois pas que cela soit le problème, car tous les dossiers sont bien parcourus, mais pas supprimés. Je pense plutôt à un problème de droits.


    Qu'en pensez-vous ?

  8. #8
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Salut, j'essaie à mon tour de faire le chimili. Euh le Cjimililililimilimili.
    Bref :

    As-tu essayer de modifier l'appel de la fonction en :
    sans le slash ? je sais pas trop, mais des fois, ça pourrait être ça.

    Ce qui est bizarre, c'est que l'erreur qu'il te sort se trouve sur l'appel de rmdir(export) qui dans ta fonction récursive se trouve être la dernière action effectuée ? je me trompe ?
    et pourtant, il n'efface pas les autres ? et tu n'as pas d'erreur sur les autres ?

    Sinon, au niveau des droits, je ne pense pas que ça vienne de là, 777 donne tous les privilèges, mais les autres codes que tu donnes ne changent que les droits au niveau des groupes.
    Tu peux toujours vérifier les valeurs de chmod sur ce site pour t'en convaincre.

    Voilà, je sais pas si j'ai fait avancer le ... problème.
    a+

  9. #9
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Merci des réponses.

    En fait, la fonction sans le slash, je l'avais faite avant, et c'est exactement la même chose. Tu as raison, c'est la dernière action effectuée.

    Mais maintenant j'ai un doute, est-ce que ma fonction est bonne ?

    Car si ce n'est pas les droits, ça peut être quoi d'autre ?

  10. #10
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    unlink et rmdir retournent toutes les 2 un booléen indiquant si l'action s'est correctement effectuée. As-tu essayé de tracer le déroulement ?

  11. #11
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Alors en fait, il n'y a que le dossier export qui n'est pas supprimé. Le reste l'est.

Discussions similaires

  1. Supprimer un dossier non vide
    Par DrTank dans le forum Général Python
    Réponses: 4
    Dernier message: 19/05/2008, 09h23
  2. Supprimer dossier non vide
    Par L8O8L dans le forum C
    Réponses: 4
    Dernier message: 13/03/2008, 19h29
  3. Suppression d'un dossier non vide
    Par JoN28fr dans le forum Langage
    Réponses: 2
    Dernier message: 13/03/2007, 10h53
  4. supprimer répertoire non vide
    Par taly dans le forum Langage
    Réponses: 33
    Dernier message: 03/08/2006, 19h49
  5. [vb.net] Supression d'un dossier non vide
    Par elkamy dans le forum VB.NET
    Réponses: 3
    Dernier message: 28/12/2005, 11h26

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