Problême php fonction unlink

Résolu
Azraka -  
 abdou -
Bonjour,

J'ai actuellement un soucis avec la fonction unlink(). J'aimerai supprimer un fichier contenu dans un dossier mais j'obtient à chaque fois un message d'erreur.

Voici mon morceau de code :

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

et voilà l'erreur :

Warning: unlink(test.jpg) [function.unlink]: No such file or directory in C:\wamp\www\site\gestion\gestion_photos.php on line 78
(gestion_photos.php étant le fichier où se trouve le code ci-dessus)

Je ne sais plus ou chercher.. Merci d'avance.

4 réponses

  1. Azraka
     
    Personne n'a d'idée ?

    Merci d'avance.
    1
    1. Azraka
       
      Au lieu d'attendre bêtement une réponse j'ai continué à chercher (cela paraît évident mais pas pour tout le monde ^^) et après différents essais j'ai enfin trouvé la solution à mon problème. Je la partage donc au cas où quelqu'un rencontrerait le même problème :

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

      Bonne journée à tous.
      0
    2. abdou
       
      pourquoi vous marquez que c'est resolu ???????!!!!!!!!!!!!!!
      0
  2. macgawel Messages postés 676 Statut Membre 89
     
    Bonjour.

    Le problème est relativement simple :
    // 1. On crée un pointeur vers le répertoire '../dossier1/dossier2' MAIS ON NE CHANGE PAS DE REPERTOIRE
    $ouverture= opendir('../dossier1/dossier2');
    // 2. On demande la suppression du fichier test.jpg DANS LE REPERTOIRE COURANT 
    unlink('test.jpg');
    // 3. On supprime le pointeur
    closedir($ouverture);
    0
    1. Azraka
       
      Merci de ta réponse, mais il me semble que j'ai bien fait ce que tu expliques..

      Pourrais-tu préciser le "MAIS ON NE CHANGE PAS DE REPERTOIRE", et le "DANS LE REPERTOIRE COURANT" ?
      Je crois bien que c'est là la source du problème mais je ne comprend pas pourquoi.
      0
  3. macgawel Messages postés 676 Statut Membre 89
     
    Je n'explique rien, j'ai juste commenté ton code pour te montrer où ça cloche.

    Tu as bien cerné la source du problème :
    Le script est dans C:\wamp\www\site\gestion\ et tu veux supprimer C:\wamp\www\site\dossier1\dossier2\test.jpg.

    Avec ta méthode :
    0. Tu (enfin, plutôt PHP) es dans le répertoire C:\wamp\www\site\gestion\
    1. Tu définis une varaible $ouverture qui pointe vers C:\wamp\www\site\dossier1\dossier2\
    2.Tu demandes la suppression du fichier C:\wamp\www\site\gestion\test.jpg (vu que tu n'as pas bougé !)
    Comme il n'existe pas, PHP te renvoie une erreur.

    Ce que tu peux faire, c'est bêtement unlink ('../dossier1/dossier2/test.jpg'); sans faire de opendir...
    0
    1. Azraka
       
      ..j'ai essayé, il me sort alors :

      Warning: unlink(../dossier1/dossier2/test.jpg) [function.unlink]: No such file or directory in C:\wamp\www\site\gestion\gestion_photos.php on line 78

      Sais-tu comment je peux "bouger" dans le répertoire où se trouve mon fichier à effacer ?
      0
  4. macgawel Messages postés 676 Statut Membre 89
     
    Warning: unlink(../dossier1/dossier2/test.jpg) [function.unlink]: No such file or directory in C:\wamp\www\site\gestion\gestion_photos.php on line 78

    Ca, ça veut dire qu'il ne trouve pas ton fichier test.jpg

    Il est sensé être dans quel répertoire ?

    Tu peux faire un test avant :
    $fichier = '../dossier1/dossier2/test.jpg';
    if ( is_file ($fichier) ) {
       unlink ( $fichier) ;
    }
    

    ou utiliser $_SERVER["PATH_TRANSLATED"], qui te donne le répertoire courant (faire un echo $_SERVER["PATH_TRANSLATED"] t'aiderait peut-être à deboguer...)
    0
    1. Azraka
       
      Voici où se trouve le code : C:\wamp\www\site\gestion\gestion_photos.php
      et voilà où se trouve le fichier, il y est c'est sûr : C:\wamp\www\site\gallerie\thermique\test.jpg

      (cette fois j'ai mis les vrais noms ^^)

      Quant au "echo $_SERVER["PATH_TRANSLATED"];" cela ne m'affiche rien..

      (je ne sais plus si je l'ai précisé mais avec le chemin absolu cela ne marche pas non plus..)
      0