PHP - Supprimer un dossier et son contenu

Répondre
Partager Rechercher
Bjour tout le monde,

Me revala avec mon problème du jour lol

Je dois supprimer le contenu d'un dossier et le dossier, seulement.. impossible de supprimer le dossier. Pourtant il supprime bien tout ce qu'il y a à l'intérieur.

Code PHP:

        $cat $_POST['cat'];

        
$liste opendir("./img/".$cat."/");
        while (
$file readdir($liste)) {
            if (!
is_dir($liste."/".$file) and $file !=".." and $file !=".") {
                    
unlink("./img/".$cat."/".$file) ;
                }
        }
        
rmdir("./img/".$cat);
        
closedir($liste); 
Je sens que ça va encore être une bete faute de ma part mais bon.. J'arrive pas à la trouver :-/
avant d'investiguer plus loin, vérifie si "./img/".$cat est en mode 777



Puis aussi, mets des conditions sur $cat parce que si il est égal à ../ tu risques d'avoir des problèmes
Citation :
Publié par Corten
avant d'investiguer plus loin, vérifie si "./img/".$cat est en mode 777
Puis aussi, mets des conditions sur $cat parce que si il est égal à ../ tu risques d'avoir des problèmes
Il est en chmod 755.. Ca va pas ainsi ? (je connais pas la signification des différents chmod ) (Et comme les tests que j'effectue en ce moment sont sur free et qu'on peut pas modifier le chmod, je l'ai dans le baba alors lol)

$cat vient d'un menu déroulant donc aucune chance d'avoir ce genre de problèmes
Si tu ne peux pas faire de chmod tu vas avoir un problème.
Mais bon, y a une solution
il faut que tu crées le dossier avec le même utilisateur que php , souvent il s'agit de nobody.
Donc, tu crées tes dossiers par un fichier php en utilisant la commande mkdir();
A ce moment tu auras les droits pour effacer tes propres dossiers.
Mais (bah oui sinon c'est pas drôle) il faut que ce soit permis et pour le savoir, il faut tester.
Merci Nyu pour le lien
Citation :
Publié par Corten
il faut que tu crées le dossier avec le même utilisateur que php , souvent il s'agit de nobody.
Donc, tu crées tes dossiers par un fichier php en utilisant la commande mkdir();
A ce moment tu auras les droits pour effacer tes propres dossiers.
La fonction mkdir est acceptée, seulement même en insistant sur le 777, free me fou les dossier en 755 donc impossible ;p
Ceci c'est pas grave, je sais au moins que mon script est correct et fonctionne sur d'autres serveurs..

Citation :
Publié par Nenaal Llaenaan
Question toute bête, mais ne faudrait-il pas fermer le répertoire (closedir($liste); ) AVANT d'essayer de le supprimer ? Il n'est pas verrouillé par opendir ?
Même en testant cela, ça ne change rien.. Ceci dit, à quoi ça sert de fermer le répertoire avant de le supprimer ? Enfin, ça pourrait oui mais je vois pas trop ce que ça changerait :-/ (et à première vue , ça change rien)
Citation :
Publié par Wipes
La fonction mkdir est acceptée, seulement même en insistant sur le 777, free me fou les dossier en 755 donc impossible ;p
Ceci c'est pas grave, je sais au moins que mon script est correct et fonctionne sur d'autres serveurs..
Euh, ben si. CHMOD 755 = Propriétaire ayant tous les droits.

Si tu crées ton dossier avec mkdir(), l'utilisateur lié à PHP sera propriétaire du dossier. Il aura donc tous droits dessus.
Donc, si il n'est pas possible de faire un chmod :

tu crées ton dossier img par php ainsi que tous les dossiers enfants ( "./img/".$cat )
Et c'est tout, tu n'es pas obligé de remonter plus haut.
Citation :
Ceci dit, à quoi ça sert de fermer le répertoire avant de le supprimer ?
Deux choses :
- Si la fonction Opendir verrouille le répertoire, tu ne pourras pas le supprimer;
- Si tu réussis à supprimer le répertoire, closedir va te remonter une erreur, puisqu'il n'existe plus.
Pas bête du tout ça Nenaal

Bon, eh ben alors Corten, ça ne va toujours pas...

Mes catégories ont un chmod 755
le dossier img chmod 755

Et lorsque j'essaie de virer tout le truc avec le script du premier post (mais avec la correction de Nenaal), il supprimer tous les fichiers mais pas le dossier après :-/

Cela dit, je n'ai pas essayé sur un autre hébergeur que Free donc ça vient peut-être de là.. (Free qui empecherait l'execution de la commande rmdir ?)
Le fait que les modes soient 755 ne donnent pas d'infos suffisantes, le problème est de savoir à quel utilisateur les dossiers appartiennent.

T'as un accès ssh sur ton truc ? Parce que si on test toutes les possibilités comme ca on est pas couché.
Il n'y a pas à tester :-/ je ne sais pas modifier le chmod.. Si je crée via php, ça se met en 755 et si je fais manuellement via le ftp c'est 700 :-/

Enfin c'est pas grave, merci tt de même pour votre aide
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés