Rechercher : dans
Par :

Php [suppression répertoire]

Dernière réponse le 11 nov 2009 à 01:13:30 neointhematrix, le 17 sep 2007 à 12:02:30 
 Signaler ce message aux modérateurs

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.

Configuration: Windows XP
Firefox 2.0.0.6

Meilleures réponses pour « php [suppression répertoire] » dans :
[PHP] Lister le contenu d'un répertoire VoirGrâce à PHP, il est possible d'afficher le contenu d'un répertoire et de ses sous-répertoires. Voici ci-dessous une fonction permettant de parcourir récursivement les répertoires et sous-répertoires et d'en afficher les fichiers : function...
Supprimer le répertoire Liens des favoris VoirMalgré la suppression du dossier "Liens" situé dans les favoris d'Internet Explorer, celui ci se régénère automatiquement au redémarrage de l'ordinateur. Il existe deux solutions pour se débarrasser du dossier Liens des favoris. Masquer le dossier...
[Windows] Impossible de supprimer un fichier ou un dossier VoirSi Windows n'arrive pas à supprimer un fichier ou un dossier, la cause peut être l'une des suivantes : Le fichier ou le dossier à supprimer est utilisé par un processus du système Le dossier à supprimer contient des fichiers ou dossiers cachés ...
PHP - Les opérateurs VoirQu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
Commandes UNIX VoirTableau des principales commandes UNIX Commande Unix Description Options ls liste le contenu d'un répertoire -a Affiche tous les fichiers, y compris les fichiers cachés ...
Objet FileSystemObject (FSO) VoirFileSystemObject L'objet FileSystemObject (FSO) permet de manipuler le système de fichiers de Windows. L'utilisation du modèle d'objet FileSystemObject s'effectue en créant une instance de l'objet Scripting.FileSystemObject l'intermédiaire de la...

1

neointhematrix, le 17 sep 2007 à 12:10:21

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?

Répondre à neointhematrix

2

iow, le 17 oct 2007 à 21:34:39

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);

Répondre à iow

3

scavenger, le 21 oct 2007 à 12:37:51

Bonjour,

voici un explication pourquoi ca ne marche pas chez free !

http://linuxfr.org/~aspyrine/14699.html

mobilisez vous !!!!

Répondre à scavenger

4

bibou1324, le 22 aoû 2008 à 13:46:44
  • +1

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

Répondre à bibou1324

5

bibou1324, le 22 aoû 2008 à 13:56:08
  • +1

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.

Répondre à bibou1324

6

kapack, le 1 sep 2008 à 01:32:10

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

Répondre à kapack

7

bibou1324, le 1 sep 2008 à 16:10:57

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 http://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 !!!

Répondre à bibou1324

8

kapack, le 1 sep 2008 à 17:33:15

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

Répondre à kapack

9

bibou1324, le 3 sep 2008 à 22:16:05

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.

Répondre à bibou1324

10

bibou1324, le 4 sep 2008 à 08:44:50

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.

Répondre à bibou1324

11

kapack, le 16 sep 2008 à 16:10:52

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.

Répondre à kapack

12

bibou1324, le 16 sep 2008 à 19:26:20
  • +1

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;
}
?>

Répondre à bibou1324

14

rusg, le 28 oct 2008 à 15:32:48
  • +1

Excuse moi on le lance comment ?

Répondre à rusg

13

kapack, le 9 oct 2008 à 11:43:39

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.

Répondre à kapack

15

boltone973, le 3 jun 2009 à 01:29:00

Hello,

Marche niquel, merci beacoup pour le script !

++

Répondre à boltone973

16

biboupat, le 11 aoû 2009 à 00:25:23

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 !

Répondre à biboupat

17

ratai, le 10 oct 2009 à 22:01:31

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 ?

Répondre à ratai

18

 kapack, le 11 nov 2009 à 01:13:30

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.

Répondre à kapack
Collection CommentÇaMarche.net