begin process at 2012 05 27 20:01:38
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > EFFACER DOSSIERS ET FICHIERS RÉCALCITRANTS

EFFACER DOSSIERS ET FICHIERS RÉCALCITRANTS


 Information sur la source

Note :
Aucune note
Catégorie :Astuces Classé sous :550, suppression, fichier, dossier Niveau :Débutant Date de création :22/07/2009 Date de mise à jour :22/07/2009 22:39:20 Vu :4 690

Auteur : Stephane33

Ecrire un message privé
Site perso
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 Description

Qui n'a pas eu ce problème un jour, un dossier ou un fichier que votre client FTP ne peut pas effacer, en vous sortant un joli message "error 550". C'est une question de droits.. Ces fichiers ont été créés par le serveur via un script que vous avez précédemment utilisé. Il va donc falloir utiliser le même principe pour les effacer.
Placez ce script dans un fichier exemple  "supp.php" et placez-le à la racine des dossiers que vous souhaitez effacer
!!!!!!!!!!!!!!!!!!
Il effacera tous les fichiers et dossiers, y compris lui-même, situé à son niveau et en dessous.


Source

  • <? function supp($target,$verbose=false) {
  • $exceptions = array('.','..');
  • if (!$sourcedir=@opendir($target)) {
  • echo "<strong>Erreur : ouverture impossible ($target)</strong><br />\n";
  • return false;
  • }
  • while(false!==($sibling=readdir($sourcedir))) {
  • if(!in_array($sibling,$exceptions)) {
  • $object=str_replace('//','/',$target.'/'.$sibling);
  • if(is_dir($object)) supp($object);
  • if(is_file($object)) {
  • echo '<strong>'.$object."</strong> : ";
  • $result=@unlink($object);
  • if ($result)echo "Fichier supprimé<br />\n";
  • else echo "<strong>!!! Suppression du fichier impossible</strong>\n";
  • }
  • }
  • }
  • closedir($sourcedir);
  • if($result=@rmdir($target)) {
  • echo "Suppression terminée<br /><hr>\n";
  • return true;
  • }
  • }
  • supp("./", true); ?>
<? function supp($target,$verbose=false) {
  $exceptions = array('.','..');
  if (!$sourcedir=@opendir($target)) {
    echo "<strong>Erreur : ouverture impossible ($target)</strong><br />\n";
    return false;
  }
  while(false!==($sibling=readdir($sourcedir))) {
    if(!in_array($sibling,$exceptions)) {
      $object=str_replace('//','/',$target.'/'.$sibling);
      if(is_dir($object)) supp($object);
      if(is_file($object)) {
        echo '<strong>'.$object."</strong> : ";
        $result=@unlink($object);
        if ($result)echo "Fichier supprimé<br />\n";
          else echo "<strong>!!! Suppression du fichier impossible</strong>\n";
      }
    }
  }
  closedir($sourcedir);
  if($result=@rmdir($target)) {
    echo "Suppression terminée<br /><hr>\n";
    return true;
  }
}

supp("./", true); ?>

 Conclusion

Le petit script utile pour réinitialiser son espace web ...

Je n'en suis pas l'auteur (trouvé avec grande difficulté, sur ce post "http://www.conseil-creation.com/forums/ftopic739- 0-asc-15.php"


 Historique

22 juillet 2009 22:39:20 :
Correction d'une faute d'orthographe signalée par ghuysmans99 Même si le présent site parle plus de développement que de français...

 Sources de la même categorie

AFFICHÉ SUR UN TABLEAU AVEC PAGINATION ET BASE DE DONNÉES par stormxp
Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000

 Sources en rapport avec celle ci

Source avec une capture LISTER LES DOSSIERS, SOUS-DOSSIERS ET NOMBRE DE FICHIERS par neo2k2
RENVOI UN DOSSIER DE NOM UNIQUE ET ALÉATOIRE par porciner
CLASSE DIRECTORYITERATOR POUR PHP4 par codefalse
PARCOURIR UN RÉPERTOIRE ET SES SOUS SOUS SOUS... RÉPERTOIRE ... par micmonay
SUPPRIMER FICHIER OU DOSSIER DANS UNE ARBORESCENCE DÉFINI ... par kerneltony95

Commentaires et avis

Commentaire de spoonisback le 23/07/2009 10:22:53

Salut
j'ai parcouru rapidement, mais je crois que tu créer une var ($verbose pour mode verbose je suppose) dont tu ne te ressert pas...?

Petit oubli ?

Commentaire de Stephane33 le 25/07/2009 15:00:18 administrateur CS

Exact, elle ne sert pas à grand chose ici.

La sortie du script n'est très jolie aussi, vu qu'il s'efface lui même.

Disons que c'est une solution radicale.

Commentaire de masternico le 27/07/2009 09:11:25

lol...
radicale est le mot.
C'est un script à garder sous le coude en cas de coup dur (lequel?) pour ceux qui aime vivre dangereusement.

Commentaire de jl59128 le 27/07/2009 11:50:14

Ce script est tout simplement énorme.
Enfin débarrassé des vieux dossiers qui trainaient sur mon serveur. Merci.

Commentaire de Stephane33 le 28/07/2009 14:34:05 administrateur CS

"C'est un script à garder sous le coude en cas de coup dur (lequel?) "
Je n'ai pas trouvé d'autres méthodes pour supprimer des dossiers et fichiers créés par Apache
Lorsque par exemple tu installes spip sur un serveur via le script d'installation, c'est ce dernier qui créé les dossiers et fichiers. Tu ne peux donc pas les effacer, car créés par le code c'est apache qui en est le propriétaire?

C'est clair c'est radical....

Commentaire de spoonisback le 28/07/2009 16:26:37

C'est du même genre que :
exec('rmdir -f /');

:D

Commentaire de ghuysmans99 le 28/07/2009 19:09:46

Ouais ... mais quand t'as pas de SSH t'es bien embêté !

Commentaire de Stephane33 le 28/07/2009 19:29:22 administrateur CS

Effectivement ce script est utile lorsque vous êtes en hébergement mutualisé. Il est clair qu'un accès root en ssh ou avec winscp sur le serveur, c'est plus facile ;)

Commentaire de masternico le 28/07/2009 21:00:45

spoonisback++

J'aurais aussi suggéré l'utilisation d'une commande linux.
Par contre, je ne vois pas ce que ssh vient faire la dedans puisque exec() est une commande php. Elle permet même de traverser des répertoires auquel on n'a pas forcément accès en mutualisé.
Exemple :
<?php
exec('cd ..;cd ..;cd ..;cd ..;cd ..;cd ..;cd ..;pwd;ls -AlS');
?>
retournera le contenu du dossier root du serveur (pour peut que tu ne soit pas chrooté). La succession de 'cd ..' permet d'être quasiment sûr de se retrouver à la racine.

Commentaire de spoonisback le 29/07/2009 00:01:18

Ou alors exec('cd / ls-Als');
pour faire plus court.

Cela dit, ce que cette commande réclame n'est pas du tout un acces SSH mais une autorisation assé élevée. Il est donc vrai que souvent si on peut lancer des exec, souvent, on a les accès SSH de la machine.

Commentaire de masternico le 29/07/2009 13:00:01

hmm...
Je suis d'accord avec la formule plus courte.

Par contre, je croyais que la restriction d'autorisation dont tu parles ne s'appliquait que sur une certaine gamme de commande et surtout dans un certain positionnement sur le disque?

Stephane3, pourrais-tu essayer la commande exec sur ton serveur mutualisé pour voir si tu es bloqué ou pas?

Commentaire de jimbowebmestre le 25/08/2009 14:44:09

Bonjour,
j avais le meme probleme, avec filezilla et Core FTP et le script. J'ai testé FireFTP en affichant les fichiers cachés (tools -> option)et la des fichiers cachés du style "._xxxx.jpg" sont apparus. je les ai supprimés et miracle, plus de fichiers récalcitrants.

Commentaire de Stephane33 le 25/08/2009 19:56:58 administrateur CS

Encore un fois cela concerne les hébergements mutualisés, car sur un serveur dédiés on a généralement accès à une console (ssh par exemple) et là les problèmes de droits ne se posent plus.
Sous linux vous ne pouvez pas supprimer un fichier dont vous n'êtes pas propriétaire à moins d'être administrateur (root) de la machine.

spoonisback a dit :
"Cela dit, ce que cette commande réclame n'est pas du tout un acces SSH mais une autorisation assé élevée. Il est donc vrai que souvent si on peut lancer des exec, souvent, on a les accès SSH de la machine."

ça c'est clair  ;)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

nombre de fichier dans un dossier [ par lan0sic ] Bonjours,Yatil un moyen de savoir combien il y a de fichier dans un dossier sur un ftp ?Merci bcp!Bonne prog... Lanosic lien vers fichier hors du dossier serveur [ par ticapix ] BonjourJe cherche a creer un lien vers un fichier qui ce trouve dans le dossier parent du serveur.Je pense qu'il y a peut etre une option dans apache. Copie de fichier [ par BirD ] Hello, j'ai un ptit prob pour copier une image, je m'explique: j'arrive parfaitement à copier l'image, mais dans le même dossier, ou un sous dossier, création de fichier [ par TRASH52 ] TRASH52bon je cherche à créer un arborescence de fichier deja enregistrés dans deux fi Time out [ par ekinoks ] Salut !alors voila j'est un petit problemme. pour ne pas avoir de time out je pencé que de se conecté et se deconecté plusiseur foi sur des duré de mo caddie virtuel avec des sessions... [ par roul ] Bon, j'explique mon probleme, je débute en php et là je vais m'arracher les cheveux sur un truc qui à l'air tout simple, mais là j'en peux plus; alors Lister les fichier et dossier [ par supergrey ] Bonjour, je voudrais savoir comment lister tous les dossiers et fichiers sur un autre serveur. pb de suppression de dossier [ par ronanf235 ] bonjourpetit post pour demander comment supprimer un dossier sous windows, ou plutot comment se debrouiller avec les droits...voici mon code de creati [ PHP ] [ Création de dossier et fichier ] [ UNIX ] [ par vvoisin ] Bonjour, J'ai un probléme avec mkdir(). Quand j'execute le code suivant sur mon pc sous easyphp, le repertoire est bien créé alors que sur mon serveur Upload de fichier ... [ par Hector78 ] Hello !Je cherche à uploader un fichier local et l'envoyer dans un dossier sur un serveur. J'ai trouvé un code, très intéressant à l'adresse suivante


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales