Suppression de fichier ftp en php

Résolu
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
Configuration: Windows Vista
Firefox 3.0.10

19 réponses

  1. la variable $data["lien_fichier"] contient le chemin du type http://www. .... / ... / ...

    si ton fichier est sur le serveur mets le lien relatif
    2
    1. 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
      1. $file =strstr($data["lien_fichier"]);


        la il manque un argument à ta fonction strstr
        0
        1. 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
          1. 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
            1. 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
              1. 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
                1. 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
                  1. il faut "remonter" de 2 niveaux

                    ../../fichiers/contrats/017.pdf 
                    
                    0
                    1. "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
                      1. 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
                        1. 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
                          1. Et je précise le fichier dans lequel je souhaite coupier/supprimer des fichiers est en mode de permissions 755.
                            0
                            1. tu ne m'a pas dis si tu avais essayé $file="../../fichiers/contrats/017.pdf " ??
                              0
                              1. 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
                                1. 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

                                  Discussions similaires

                                  question pix mot caché

                                  7 réponses