Effacer dossiers et fichiers récalcitrants

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 628 fois - Téléchargée 18 fois

Contenu du snippet

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 / Exemple :


<? 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"

A voir également

Ajouter un commentaire

Commentaires

Messages postés
630
Date d'inscription
samedi 15 février 2003
Statut
Modérateur
Dernière intervention
9 octobre 2011

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 ;)
Messages postés
1
Date d'inscription
mercredi 31 août 2005
Statut
Membre
Dernière intervention
25 août 2009

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.
Messages postés
494
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

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?
Messages postés
72
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
5 février 2010

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.
Messages postés
494
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

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.
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.