Supression de fichier en PHP avec unlink(URL)

Résolu
Bonjour, m'etant renseigner sur la supression de fichier en php, j'utilise la fonction unlink(chemin) :

Voici mon code :

 $query = "SELECT *  FROM docs WHERE id = ".$id;
  $result = mysql_query($query, $cnx);
  while($row = mysql_fetch_row($result))
  {
  $id     	= $row[0];
  $type 	= $row[1];
  $url	 = $row[4];
  
  //$lien="/docs/$type/$url";
  //$lien="C:\Program Files\EasyPHP 2.0b1\www\docs\Référentiels\Copie.doc";
    $lien="..\docs\Référentiels\Copie.doc";
    unlink('$lien');
  echo"lien $lien"; 


dans les trois cas de $lien j'ai le droit à un

Warning: unlink($lien) [function.unlink]: No such file or directory in C:\blablabla\sitelocale\reblablabla

Alors que mon echo affiche a chaque fois le bon ien avec l'extension du fichier...
D'ou sa proviendrais?
Configuration: Windows 3.1.2 workstation edition
Netscape 0.2

14 réponses

  1. if( file-exists( "../documents/$dossier/$dossier2" ) )
       unlink( "../documents/$dossier/$dossier2" ); 
    else
       echo "ce fichier n'existe pas";
    
    6
    1. Salut croy, merci a toi.
      C'est exactement ce qu'il me fallait.

      Mais avec un '_' au lieu du '-' file_exists.

      C'est pratique comme fonction ;)

      Merci, j'attaque le reste maintenant !! je n'arrive pas a parser une infos et d'autres petit soucis...

      A+
      3
      1. Essaye avec un chemin complet :
        unlink( "C:\Program Files\EasyPHP 2.0b1\www\doss\text.txt" );
        
        1
        1. en dur unlink( "C:\Program Files\EasyPHP 2.0b1\www\doss\text.txt" ); sa marche nickel par contre il n'aime pas les antislash, car au lieu de lire \texte il l'interprete comme "\t" +"exte".

          Maintenant je n'ai plus qu'a travailler tout sa pour rendre mes liens dynamiques...
          1
          1. J'ai remit mes liens mes variables et la supression des documents hors de mon repertoires se passe a merveille ...

            voici mon code

            unlink( "../docs/$type/$url" );


            Merci pour votre aide et votre patience
            1
            1. je remonte un peu ce post.....

              si un fichier est supprimé et je redemande la supression ... (enregistrement dans la base toujours present mais le fichiers n'existe plus)

              j'ai l'erreur :

              Warning: unlink(../dossier/dossier2/document_word.doc) [function.unlink]: No such file or directory in C:\Program Files\EasyPHP 2.0b1\www\fonctions\suppr.php on line 127


              j'essai de contourner cette erreur avec un :

              // suppression du document
              unlink( "../documents/$dossier/$dossier2" );
              if (unlink = false)
              echo "<script>alert('Le document n'existe plus');</script>";


              Sa ne marche pas (la comparaison est foireuse)
              Comment réaliser cette fonction svp ?
              Merci
              1
              1. je relance donc, je n'ai pas trouver comment exploiter le "false"
                1
                1. Bonjour,

                  Si ton fichier .doc est dans le même dossier que ta page avec ton code PHP, la ligne suivante est fausse:

                  $lien="..\docs\Référentiels\Copie.doc";


                  Dans ce cas il faudrai mettre:

                  $lien="docs\Référentiels\Copie.doc";


                  En fait ça dépends d'ou est ta page d'origine.
                  Sinon, met :

                  $lien="\docs\Référentiels\Copie.doc";


                  Normalement il te renverra sur la racine et suivra l'ordre des dossiers du lien.
                  0
                  1. Remplace
                    unlink('$lien');
                    par
                    unlink( $lien );
                    0
                    1. son message disais qu'il ne trouvais pas la page, pas forcement que sa variable était incorrecte.

                      No such file or directory in C:\blablabla\sitelocale\reblablabla 


                      Lien est bien présent, donc la variable est correcte. Je pense que c'est le chemin qui ne l'est pas.
                      -1
                  2. Il reste que le code donné (unlink( '$lien' );) ne peut pas marcher et que c'est la première chose à modifier.
                    0
                    1. Salut, le chemin est le bon, le document ne fait pas partie du répertoire ou il y a mon script php.

                      Je ne comprends pas pourquoi le fichier ne s'efface pas. J'ai lu une cinquantaine de post et vu un peu de tout mais a chaque fois je n'arrive pas a supprimer mes fichiers...

                      J'ai même vu un exemple qui à fonctionner pour un membre :

                      $ouverture= opendir("../dossier2/dossier2");
                      unlink("../dossier2/dossier2/test.jpg");
                      closedir($ouverture); 


                      Ce qui me donnerais par exemple avec des valeurs en dur :
                      $ouverture= opendir("../docs");
                      unlink("../docs/text.txt");
                      closedir($ouverture); 


                      Mais sa ne marche toujours pas.. :( étrange , très étrange même ...
                      0
                      1. ça pourrai pas venir des fonctionnalités et extensions de PHP qui ne serai pas activé ??
                        -1
                    2. J'ai rien trouver sur mon phpinfo.

                      Quelles paramètres sont à verifier ?
                      -1
                      1. opendir / closedir n'a certainement rien à voir.

                        Ma reco est de revenir à une approche méthodique et progressive :

                        Commence par essayer un script avec le chemin vers le fichier à détruire en dur :

                        1. crée un script avec unlink( "toto.txt" );
                        2. dans le même dossier que ce script crée un fichier toto.txt avec n'importe quoi à l'intérieur
                        3. exécute le script

                        Qu'est-ce-que ça donne ? est-ce-que le fichier toto.txt est supprimé ? sinon quel message d'erreur (copié/collé STP)
                        -1
                        1. comme par hasard c'est exactement ce que je viens de faire !! faut arreté la télépathie !!

                           $lien="text.txt";
                             unlink($lien);
                             
                              $lien2=text2.txt;
                             unlink($lien2);
                             


                          Notice: Use of undefined constant text2 - assumed 'text2' in C:\Program Files\EasyPHP 2.0b1\www\ad\sup.php on line 127

                          Notice: Use of undefined constant txt - assumed 'txt' in C:\Program Files\EasyPHP 2.0b1\www\ad\sup.php on line 127

                          Warning: unlink(text2txt) [function.unlink]: No such file or directory in C:\Program Files\EasyPHP 2.0b1\www\ad\sup.php on line 128

                          text.txt supprimé
                          text2.txt toujours la
                          -1
                          1. Sinon a quoi correspondent les lignes qu'il t'indique ?
                            -1