FTP : fichiers non supprimables

Bonjour,

J’ai des fichiers que je ne parviens pas à supprimer… Je pense que cela vient du fait qu’ils ont des noms avec des caractères pas bien gérés. Par exemple, l’un d’eux se nomme tenez vous bien : “cadre r?glementaire li? ?l’utilisation d’hpv carburant.pdf”

Y a-t-il une solution pour les renommer ou les supprimer ? Mon client ftp (gFTP) ne veut rien savoir !

Merci :slight_smile:

As-tu essayé de te connecter avec un client en mode texte (genre le terminal sous Linux) qui gère l’autocomplétion? Peut-être que ça ne changera rien, mais j’irais dans cette voie. Ou éventuellement voir les droits sur ce fichier (un “chmod 777 <le_fichier>” pourrait permettre de l’effacer)?

Coop,
Greg

Je me suis loggé avec un le client en ligne de commande par défaut sous linux (ftp) mais il ne fait pas de complétion… Tout ce que j’ai obtenu est :
ftp> delete plaquette alter’?nergies.pdf
550 Could not delete plaquette: No such file or directory
ftp> delete "plaquette alter’?nergies.pdf"
550 Prohibited file name: plaquette alter’?nergies.pdf

J’ai l’impression que c’est pas un problème simple : http://forum.hardware.fr/hfr/WindowsSoftware/Securite/supprimer-fichier-contient-sujet_175468_1.htm
http://www.commentcamarche.net/forum/affich-1083257-probleme-ftp-liste-du-repertoire

Finalemnet, j’ai aussi essayé avec lftp qui fait la complétion automatique mais il sèche sur mes noms de fichiers… Je copie colle ce la console affiche après un ls pour indiquer le nom du fichier à supprimer et çà me donne :
lftp alterenergies.ouvaton.org@ftp.ocsa-data.net:/html/dev> rm "plaquette alter’nergies.pdf"
rm: L’accès a échoué: 550 Prohibited file name: plaquette alter’nergies.pdf
lftp alterenergies.ouvaton.org@ftp.ocsa-data.net:/html/dev> rm plaquette alter’nergies.pdf
rm: L’accès a échoué: 550 Could not delete plaquette: No such file or directory
rm: L’accès a échoué: 550 Could not delete alter’nergies.pdf: No such file or directory

Bon, la je sèche !

Bonjour,

Une piste comme ça qui m’a déjà servi :

mettre un fichier php dans le même répertoire avec
unlink(“nom_du_fichier”);

doc ici -> http://fr3.php.net/manual/fr/function.unlink.php

Christian.

C’était une bonne piste.
J’ai mis un fichier php à coté du répértoire que je voulais supprimer (“docs”) avec ce code :

<?php $dh = opendir("docs"); while (($file = readdir($dh)) !== false) unlink("docs/".$file); closedir($dh); ?>

Une fois executé (avec quelques avertissement sous pretexte qu’on ne peu pas suprimer les fichiers “.” et “…”), le répértoire “docs” a bien été supprimé. Merci :slight_smile:

Bonjour @Etienne_Fort, bonjour à tous,

pourrais-tu (ou quelqu’un pourrait-il ?) expliciter un peu plus ta solution de « mettre un fichier php à côté du répertoire à supprimer » ? de manière à la rendre plus facilement généralisable par des newbies ?

par exemple :

  • à quoi sert $dh ?
  • je vois opendir(), readdir(), donc je suppose qu’il s’agit d’un code spécifique pour supprimer un dossier, quid si on veut juste supprimer un fichier ?
  • pourquoi faut-il mettre while (…) avant unlink ?

je débute en création de site web et je me retrouve avec ce même problème de fichiers avec des caractères pas pris en charge et que filezilla ne veut donc pas supprimer.

je précise que je n’y connais rien en php (mon site web c’est que du html, css et un poil de javascript) et que ma motivation pour me plonger dans php en partant de zéro est assez faible alors que je veux juste supprimer des fichiers de mon site…

d’avance merci !

Dans un éditeur de texte, tu copies-colles le code fourni. Le renomme en :
suppression.php.
Tu le transfères (avec Filezilla) à côté du dossier à supprimer. Si ce dossier à supprimer s’appelle docs, tu n’as rien à faire, sinon, tu changes tous les docs du script par le nom de ton dossier à supprimer.

Le script PHP liste les fichiers contenus dans docs/ puis s’il n’arrive pas les lire, il fait un unlink (suppression du fichier en PHP).

Pour l’exécuter, tu appelles l’URL : http://monsite.tld/suppression.php ou à modifier si ce n’est pas dans le dossier principal.

Attention, ça supprime tous les fichiers qu’il n’arrive pas à lire, cela peut être dangereux, comme toute suppression.

2 « J'aime »

Ce script supprime tous les fichiers du répertoire docs (et pas seulement ceux qu’il n’arrive pas à lire), ce n’est pas ce que tu veux.

Pour supprimer des fichiers spécifiques, tu peux créer un fichier appelé par exemple supprime.php dans lequel tu mets :

<?php unlink("fichier1"); unlink("fichier2"); ?>

Tu le mets par FTP dans le répertoire contenant ces fichiers à supprimer, puis avec ton navigateur tu vas sur la page :
http://…tonsite…/…tonrépertoire…/supprime.php

Le simple fait de consulter cette page n’affichera rien mais exécutera le code qui supprime les fichiers.

Nic

1 « J'aime »

Cette boucle ne teste pas la lisibilité des fichiers ? while (($file = readdir($dh)) !== false)

Non : readdir lit le répertoire, c’est-à-dire la liste des fichiers. À chaque appel il renvoie le nom d’un fichier. Quand il a énuméré tous les fichiers, l’appel suivant renvoie FALSE et la boucle while se termine.

Voir PHP: readdir - Manual

Nic

Oui bien vu, donc attention @BotaFlo car cela supprime tous les fichiers du dossier `docs/

Merci beaucoup @Bristow et @Taunic pour votre aide !
Ça a marché comme sur des roulettes !

3 « J'aime »