Php [suppression répertoire] [Fermé]

Signaler
Messages postés
71
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
4 février 2010
-
 jmb -
Bonjour à tous,

J'ai un problème concernant la suppression d'un répertoire en PHP. Je me suis renseigné et apparemment la fonction rmdir ne fonctionne que si le repertoire est vide. Ca ok.

Je fais donc un test ou je crais un répertoire comme ceci : mkdir("gg",0777); Jusque là tout va bien :)
Mais lorsque j'exécute une autre page (apres que le repertoire est était créé bien sur) contenant ce code : rmdir("gg"); rien ne se passe. Je n'ai pas de message d'erreur mais le dossier est toujours là.

Si quelqu'un a une soluce a proposer....

Merci d'avance à tous.

17 réponses

YA-HA
Bon désolé d'up ce post. Mais il se trouve que je viens de trouver un moyen de supprimer les répertoires (même non vide!!!) chez free. Comme quoi à force de bidouiller ... Je sais le post date un peu mais je pense que ça pourra aider des gens. Voici la fonction donc :
function clearDir($dossier) {
	$ouverture=@opendir($dossier);
	if (!$ouverture) return;
	while($fichier=readdir($ouverture)) {
		if ($fichier == '.' || $fichier == '..') continue;
			if (is_dir($dossier."/".$fichier)) {
				$r=clearDir($dossier."/".$fichier);
				if (!$r) return false;
			}
			else {
				$r=@unlink($dossier."/".$fichier);
				if (!$r) return false;
			}
	}
closedir($ouverture);
$r=@rmdir($dossier);
@rename($dossier,"trash");
return true;
}


En fait tout est dans la ligne : @rename($dossier,"trash");
Et oui la fonction permettant de renommer les dossiers n'est pas désactivée ! Et si on renomme deux dossier vides avec un même nom un des deux dossiers sera supprimé.
Bon par contre je comprends pas pourquoi il arrive à supprimer le dernier dossier. Si quelqu'un pouvait m'expliquer ce que j'ai trouvé par hasard ...

J'espère que ce sera utile
16
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

tiens, c'est une fonction que tu as trouvé http://www.wikistuce.info/doku.php/php/supprimer_un_dossier_et_son_contenu ?

quand on tappe "supprimer dossier php" dans google c'est le premeir script trouvé...

... sans le "rename"... alros je dis "GG" pour l'astuce :) lol
Bravo Bibou, ça marche toujours ! J'avais un dossier contenant une chiée de dossiers créés par un script étranger avec des caractères non reconnus et donc impossible à supprimer en FTP. Ton script a tout nettoyé, plus qu'à supprimer le dossier trash en FTP et hop, nickel !
Salut,
J'aimerais vous remercier d'avoir partager ce code , il m'a était utile j'avais le temps et je serais resté bloqué dessus sans votre précieuse aide :)
Messages postés
11
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
5 août 2009
3
Bon je vais essayer d'être clair :

Un seul fichier php, dans le même répertoire que le dossier à supprimer. Ce fichier php contient (remplacer "Nom_du_dossier_a_supprimer" par le nom du dossier à supprimer):

<?php
$a_del = "Nom_du_dossier_a_supprimer";  // <- c'est ici qu'on remplace

clearDir($a_del);
function clearDir($dossier) {
	$ouverture=@opendir($dossier);
	if (!$ouverture) return;
	while($fichier=readdir($ouverture)) {
		if ($fichier == '.' || $fichier == '..') continue;
			if (is_dir($dossier."/".$fichier)) {
				$r=clearDir($dossier."/".$fichier);
				if (!$r) return false;
			}
			else {
				$r=@unlink($dossier."/".$fichier);
				if (!$r) return false;
			}
	}
closedir($ouverture);
$r=@rmdir($dossier);
@rename($dossier,"trash");
return true;
}
?>

Excuse moi on le lance comment ?
super script qui fonctionne parfaitement sur free
Bonjour a toi,

a priori je dirais que le cause est le " Thumbs.db " qui se créé automatiquement. Ma solution pour supprimer un repertoire sans échec :

$chemin = "chemin_du_repertoire";
$dir = opendir($chemin);
while($file = readdir($dir)) {
unlink($chemin . "/" . $file);
}

closedir($dir);

rmdir($chemin);
Génial...3 jours que je galérai...Merci!
Rha bon j'ai trouvé
Oui en fait il reste bien un répertoire à la fin. Je regardais juste pas au bon endroit. Enfin bon ça permet de supprimer les répertoires en cascade quand même. J'ai pas perdu ma journée.
Bonjour,

voici un explication pourquoi ca ne marche pas chez free !

https://linuxfr.org/users/aspyrine/journaux/free-ou-la-gestion-des-fonctions-interdites-en-php

mobilisez vous !!!!
Messages postés
11
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
5 août 2009
3
Après vérification, il existait un petit problème avec le php5 qui n'est pas activé par défaut sur free. Je l'ai corrigé dans les téléchargements proposés. Pour ne pas tout réuploader, il suffit en fait de rajouter au début du fichier ".htaccess" la ligne "php 1" pour que tout marche correctement.
hello,

Marche niquel, merci beacoup pour le script !

++
Bonsoir et super merci, pour ton script. J'avais un putain de dossier qui me prenet le choux depuis des mois...

Encore une fois merci et bravo !
super le script marche avec un dossier correctement désigné

ex <?php
$a_del = "Nom_du_dossier_a_supprimer/Nom_du_dossier_a_supprimer"; // <- c'est ici qu'on remplace

mais ne marche pas sur un répertoire avec plusieurs dossiers :
message

Fatal error: rename(installold/spip192c-old/tmpg/sessions,trash) [<a href='function.rename'>function.rename</a>]: Directory not empty in /mnt/141/sdb/5/a/webmoulin/del_img.php on line 21

une piste ?
Messages postés
179
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
21 août 2012
12
ratai je crois que le problème vient d'un fichier avec un nom contenant des caractère non standard, si c'est ça, c'est vraiment la merde, j'ai eu ce problème, impossible de trouver la réponse.
avec windows en ftp tu peux transférer ces fichiers nommés instandarmment sur ton serveur free par exemple, mais comme c'est du linux et à ce que j'ai compris linux et windows ne se comprennent pas bien sur ce point.
Messages postés
71
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
4 février 2010
14
Alors précision, je le testai direct sur le serveur de free et ca marchait pas mais en local ca marche bien.

Une idée du pourquoi ca marche pas sous free?
Messages postés
179
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
21 août 2012
12
oui, bien util, mais je débute en php, comment l'utiliser, je cherche un script simple pour supprimer un répertoire et ses sous répertoires sur mon site free.
De même je cherche un script qui me dézipe un fichier rar ou zip uploadé par exemple, ça va plus vite d'envoyer un fichier rar ou zip que des milliers de fichiers
Messages postés
11
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
5 août 2009
3
Pour l'utiliser c'est pas compliqué : tu copie-colles la fonction que j'ai écrite ci dessus entre les balises php, et tu l'appelle comme ça :

clearDir("Nom_du_dossier_a_supprimer");

c'est tout !
Pour le dézippage (rar j'ai pas trouvé) je me suis déjà posé sur la question. c'est pas facile de trouver un script qui le fasse sur free. J'en utilise un pour mon webOS (ou gestionnaire de fichiers en ligne si ce nom abusif indispose certains), que j'ai trouvé sur https://www.phpclasses.org/
Je sais plus lequel c'est, si tu veux aller voir sur mon projet c'est sur http://zoufios.free.fr (un peu de pub pour son site perso, ça fait jamais de mal :P). Voila !!!
Messages postés
179
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
21 août 2012
12
Est-ce que c'est ça :
- je colle ta fonction dans un fichier php que j'appelle fonctioneffacer.php, et je crée un autre fichier effacer.php où je mets : <? clearDir("Nom_du_dossier_a_supprimer"); ?>

J'ai mis ton programme zoufios sur mon site pour l'essayer, un autoextractible serait pas mal, genre j'envoie zoofios.php sur le site et quand je le lance, il s'extracte, j'ai déjà vu des script comme ça, ça évite d'avoir des milliers de fichiers à transférer.

Là là, qu'est-ce que je galère à me mettre au php, pourtant dans le temps j'ai pas mal programmé en basic et assembleur.

Aï, zoufios marche pas chez free
Messages postés
11
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
5 août 2009
3
si tu veux faire ça en deux fichiers séparés, tu dois mettre dans effacer.php :
<? include("fonctioneffacer.php"); clearDir("Nom_du_dossier_a_supprimer"); ?> 

zoufios marche chez free normalement. c'est quoi le problème que tu rencontres ?
Sinon pour l'autoextractible je bosse dessus actuellement.
Messages postés
179
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
21 août 2012
12
Bon j'ai toujour un putain de répertoire qui contient d'autres putains de répertoire sur mon site, que je ne peux pas effacer en ftp, alors est-ce que quelqu'un a une solution complète pour débutant à ce genre de problème que beaucoup de monde à ou je dois ouvrir un autre compte vierge ?
C'est dingue, y a pas moyen d'avoir une réponse simple à une question simple, faut toujour qu'une bande de branleurs la ramène avec leur science tout ça pour du code qui marche jamais.
Alors, est-ce que c'est possible d'avoir dans 1 seul fichier en php, de quoi effacer un répertoire et son contenu quel qu'il soit ?
Je sais que c'est possible, mais est-ce que quelqu'un peut m'expliquer comment faire, ou personne ne sait ?
Si vous ne savez pas, pas la peine de me le dire, c'est pas une tare de pas savoir.
Messages postés
179
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
21 août 2012
12
bibou, je te remerci, ton script marche, il reste le répertoire trash mais je crois que l'on ne peut pas effacer de répertoire en php, en tout cas c'est exactement ce que je cherchais, ça parait simple, mais pour ce trouver ce genre de script, malgré google qui est "mon ami", c'est galère. Une petite suggestion, tu devrais le mettre dans phpscript, ça dépannerait beaucoup de monde.