Suppression de fichier ftp en php

Résolu/Fermé
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009 - 9 juin 2009 à 13:14
 Kristof - 29 mai 2013 à 17:38
Bonjour,
j'ai un petit probleme pour supprimer un fichier sur un ftp en php.
Voici mon code :
<?php
	require("config.php");
	mysql_connect (DB_HOST,DB_LOGIN,DB_PASS); 
	mysql_select_db (DB_BDD);
	$sql="SELECT * FROM Contrat WHERE id_contrat={$_GET["id"]}";
	$req=mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
	$data=mysql_fetch_assoc($req);
$file =strstr($data["lien_fichier"]);
$ftp_server=gethostbyname(FTP_HOST);
$ftp_user_name=FTP_LOGIN;
$ftp_user_pass=FTP_PASS;
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
unlink($file); 
ftp_close($conn_id);
?>



la variable $data["lien_fichier"] contient le chemin du type http://www. .... / ... / ...
j'ai essayé en enlevant l'adresse du site, mais rien ne marche.

Voici le code d'erreur :
Warning: unlink(../fichiers/contrats/017.pdf) [function.unlink]: No such file or directory in /mnt/web4/42/97/51277797/htdocs/lcinformatique/administration/suppression_contrat.php on line 21


Merci d'avance de votre aide
A voir également:

19 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
9 juin 2009 à 13:18
la variable $data["lien_fichier"] contient le chemin du type http://www. .... / ... / ...

si ton fichier est sur le serveur mets le lien relatif
2
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009
9 juin 2009 à 13:32
C'est que j'avais essayé : ../fichiers/contrats/017.pdf (je remonte d'un niveau, parce que la page php si trouve dans un autre dossier. Mais ca me met la meme erreur.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
9 juin 2009 à 14:05
$file =strstr($data["lien_fichier"]);


la il manque un argument à ta fonction strstr
0
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009
9 juin 2009 à 14:16
oui pardon, j'avais mis ca correctement au depart : $file =strstr($data["lien_fichier"],"/fichiers); pour récupérer /fichiers/contrats/017.pdf
Ensuite j'ai fait
$file = "..".$file; pour avoir le lien relatif : ../fichiers/contrats/017.pdf et quand je fais ca, ca ne pmarche toujours pas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009
9 juin 2009 à 17:43
up
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
9 juin 2009 à 20:46
fais un echo $file pour voir

ensuite es tu certain de ton chemin relatif

tel qu'il est fait cela veut dire que tu as

/fichiers/tes fichiers .pdf
/autre_dossier/ton_script_php
0
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009
10 juin 2009 à 09:18
Voici mon echo $file : ../fichiers/contrats/017.pdf

et voici mes dossiers :
/fichiers/contrats/tes fichiers .pdf
/administration/ton_script_php

j'ai encore passé 2heures hier soir a tester pleins de trucs, mais sans succes.
0
salut,

alors pour t'aider pour supprimer des fichiers par php, je te conseil la commande php exec()

exemple de script sur un hébergeur sous linux:

supprimer un fichier :
<?
exec(rm fichier.php);
?>

créer un dossier :
<?
exec(mkdir dossier);
?>

...

J'espère que cela pourra t'aider mais bon le problème c'est que tous les hébergeur n'accepte pas ces commandes
0
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009
10 juin 2009 à 10:03
mais je dois faire comment pour me placer dans le dossier voulu ?
je met un lien relatif comme ci dessous ?
exec(rm ../fichiers/contrats/017.pdf);

edit : avec le lien relatif, ca me met : Parse error: syntax error, unexpected T_VARIABLE
donc je veut bien faire exec(rm 017.pdf); mais comment je fait pour me placer dans le bon dossier ?
0
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009
10 juin 2009 à 13:02
up
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
10 juin 2009 à 22:03
il faut "remonter" de 2 niveaux

../../fichiers/contrats/017.pdf 
0
"Voici mon echo $file : ../fichiers/contrats/017.pdf
et voici mes dossiers :
/fichiers/contrats/tes fichiers .pdf
[...]"

Et si $file vaut "/fichiers/contrats/017.pdf ", voire "./fichiers/contrats/017.pdf ", ça pourrait peut-être marcher ...
0
Et je n'ai pas tilité sur le coup, mais la fonction "ftp_delete" pourrait avoir son utilité ...
"unlink" est pour la suppression d'un fichier local.
0
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009
11 juin 2009 à 10:21
Merci de votre aide, je teste la fonction ftp_delete et je vous donne des nouvelles.


edit : ca me met Warning: ftp_delete() [function.ftp-delete]: Permission denied.
Il faut faire quelque chose pour autoriser cette fonction

redit : et puis je viens de retester ma fonction ftp_put et elle me met le meme warning alors que ca marchais avant. Grr ca me saoule lol, ca fait 2 jours que je suis dessus.
0
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009
11 juin 2009 à 10:49
Et je précise le fichier dans lequel je souhaite coupier/supprimer des fichiers est en mode de permissions 755.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 juin 2009 à 10:58
tu ne m'a pas dis si tu avais essayé $file="../../fichiers/contrats/017.pdf " ??
0
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009
11 juin 2009 à 11:24
pareil : permission denied.
0
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009
11 juin 2009 à 11:54
Je viens de trouver par moi meme, en gros je développe un site pour mon stage, et sur le serveur ou j'heberge mon site, il y a deja plusieurs site chacun dans un dossier (mon site n'est pas a la racine du serveur). Et il fallait donc que j'ecrive ceci : $file="nom_du_dossier/fichiers/contrats/017.pdf ".
Et pas besoin de toucher aux permissions.
Je remercie quand meme tous ceux qui ont ont pris un peu de leur temps pour m'aider.
0
Bonjour,

En local (WAMP), ayant plusieurs sites développés, j'ai différents dossiers à la racine www.
Le "file_exists" demande que le chemin complet à partir de www soit indiqué : file_exists(nom_site/dossier/fichier_à_vérifier).
Le "unlink" lui ne demande qu'un chemin relatif : unlink(dossier/fichier_à_supprimer).
Pour savoir si je suis en local ou en distant, je fais une vérif' sur "$_SERVER['SERVER_NAME']" pour déterminer la racine du chemin du fichier.

J'espère avoir été clair.
0