Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1117 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème avec la fonction Unlink

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec la fonction Unlink

n°1942903
Profil sup​primé
Posté le 20-11-2009 à 18:00:53  answer
 

Hello  :hello:  
 
Pour les besoins d'une galerie photo que je suis en train de coder, j'ai réalisé un script qui permet d'effacer les images situées dans le répertoire sélectionné.
Voici le script:

<?php
if(isset($_GET['gal']))
    {
    $nom_gal = $_GET['gal'];
     
    $req = "DELETE FROM gal_galerie WHERE nom_gal = '$nom_gal'"; // Je supprime le lien de l'image dans la BDD
    $sql = mysql_query($req);
     
    $galerie = 'galeries_util'.'/'.$login.'/'.$nom_gal.'/'.'miniature';
    $dos = opendir($galerie);
    while($file = readdir($dos))
        {
        unlink('galeries_util'.'/'.$login.'/'.$nom_gal.'/'.'miniature'.'/'.$file);
        unlink('galeries_util'.'/'.$login.'/'.$nom_gal.'/'.$file);
        }
        rmdir('galeries_util'.'/'.$login.'/'.$nom_gal.'/'.'miniature');
        rmdir('galeries_util'.'/'.$login.'/'.$nom_gal);
    echo '<b>'.'La galerie a été effacée avec succès !'.'</b>';
    }
?>


 
Cependant lorsque je test le script en local voilà ce qu'il m'affiche.
 


Warning:  unlink(galeries_util/flo/toto/miniature/.) [[url=http://localhost/Galerie/utilisateur/function.unlink]function.unlink[/url]]: Permission denied in C:wampwwwGalerieutilisateurmodulessupprimer_gal.php on line 14
 
Warning:  unlink(galeries_util/flo/toto/.) [[url=http://localhost/Galerie/utilisateur/function.unlink]function.unlink[/url]]: Permission denied in C:wampwwwGalerieutilisateurmodulessupprimer_gal.php on line 15
 
Warning:  unlink(galeries_util/flo/toto/miniature/..) [[url=http://localhost/Galerie/utilisateur/function.unlink]function.unlink[/url]]: Permission denied in C:wampwwwGalerieutilisateurmodulessupprimer_gal.php on line 14
 
Warning:  unlink(galeries_util/flo/toto/..) [[url=http://localhost/Galerie/utilisateur/function.unlink]function.unlink[/url]]: Permission denied in C:wampwwwGalerieutilisateurmodulessupprimer_gal.php on line 15
 
Warning:  rmdir(galeries_util/flo/toto) [[url=http://localhost/Galerie/utilisateur/function.rmdir]function.rmdir[/url]]: Directory not empty in C:wampwwwGalerieutilisateurmodulessupprimer_gal.php on line 18


Les images et le dossier miniature sont bien supprimés mais je comprends pas pourquoi j'ai tous ces warnings. Sachant que c'est moi qui les upload je devrais pas avoir ces avertissement :/
 
Et autre chose que je pige pas, à la ligne 18 il me dit que le dossier n'est pas vide (ce qui empêche de le supprimer) alors que pourtant il l'est bien vide  :sweat:  
 
Donc si vous avez une lanterne ou une lampe de poche en trop  [:tinostar]  Merci


Message édité par Profil supprimé le 20-11-2009 à 18:02:21
mood
Publicité
Posté le 20-11-2009 à 18:00:53  profilanswer
 

n°1942906
Fred999
Rabat-joie
Posté le 20-11-2009 à 18:15:29  profilanswer
 

Je crois me souvenir que, lorsque tu fais un readdir(), il met dans la réponse les éléments . et ..

 

Ca semble se confirmer à la vue de tes messages d'erreur. Il faudrait donc que tu effectues un test sur l'existence et la nature de chaque fichier avant de le supprimer (et idem pour les répertoires).

 

Quant à la dernière erreur, supprimes-tu le sous-répertoire "miniature" avant de supprimer le répertoire "toto" ?


Message édité par Fred999 le 20-11-2009 à 18:23:02
n°1942907
Fred999
Rabat-joie
Posté le 20-11-2009 à 18:16:52  profilanswer
 

Sinon, de manière générale, je pense qu'il est de bon ton, lorsque tu utilises un chemin, de commencer par "./", histoire de bien comprendre de quoi tu parles.

n°1942917
Profil sup​primé
Posté le 20-11-2009 à 18:34:45  answer
 

Ah oui j'avais pas fais gaffe à '.' et '..'  :sweat:  
 
Et ensuite oui le répertoire miniature est bien supprimé en premier pour justement pouvoir effacer le répertoire toto ;)
 
Euh par contre je suis pas certain de comprendre la différence entre './' et '/'  [:fing fang fung]
 
Edit: Je comprends pas cette erreur la:
 

Warning:  unlink(galeries_util/flo/toto/miniature/..)


Pourquoi y a '..' dans le dossier miniature  :??:
 
Edit: Avec cette version du script ça va mieux:
 

<?php
if(isset($_GET['gal']))
    {
    $nom_gal = $_GET['gal'];
     
    $req = "DELETE FROM gal_galerie WHERE nom_gal = '$nom_gal'";
    $sql = mysql_query($req);
     
    $galerie = 'galeries_util'.'/'.$login.'/'.$nom_gal.'/'.'miniature';
    $dos = opendir($galerie);
    while($file = readdir($dos))
        {
        if($file !='.' AND $file !='..')
            {
            unlink('galeries_util'.'/'.$login.'/'.$nom_gal.'/'.'miniature'.'/'.$file);
            unlink('galeries_util'.'/'.$login.'/'.$nom_gal.'/'.$file);
            }
        }
        rmdir('galeries_util'.'/'.$login.'/'.$nom_gal.'/'.'miniature');
        rmdir('galeries_util'.'/'.$login.'/'.$nom_gal);
    echo '<b>'.'La galerie a été effacée avec succès !'.'</b>';
    }
?>


Mais toujours cette erreur: Warning:  rmdir(galeries_util/flo/qds) [function.rmdir]: Directory not empty in C:wampwwwGalerieutilisateurmodulessupprimer_gal.php on line 21
 
[b][/b]Alors que pourtant je dis bien de supprimer le dossier miniature en premier  :heink:


Message édité par Profil supprimé le 20-11-2009 à 19:02:33

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème avec la fonction Unlink

 

Sujets relatifs
Problème de superpositionProblème insertion dans une base d'un champ texte
Problème PL/SQL Si tuple déjà dans la baseProblème qualité player
probleme de bdd OVH aprés installation wordpressProbleme pour faire sortir mon menu déroulant sur la droite
Probleme d'espace autour des images dans tableauappel d'une fonction dans une boucle ne se réalise qu'une fois
probléme avec ma page d'indexProbleme avec la fonction unlink
Plus de sujets relatifs à : Problème avec la fonction Unlink


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR