Suppression de fichier ftp en php

Résolu
Everio Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -  
 Kristof -
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

19 réponses

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
$file =strstr($data["lien_fichier"]);


la il manque un argument à ta fonction strstr
0
Everio Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
up
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention  
 
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
mrtechno01
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
up
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
il faut "remonter" de 2 niveaux

../../fichiers/contrats/017.pdf 
0
A.Nonymous
 
"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
A.Nonymous
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
tu ne m'a pas dis si tu avais essayé $file="../../fichiers/contrats/017.pdf " ??
0
Everio Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 
pareil : permission denied.
0
Everio Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 
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
Kristof
 
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