Problème avec la fonction Unlink - PHP - Programmation
Marsh Posté le 20-11-2009 à 18:15:29
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" ?
Marsh Posté le 20-11-2009 à 18:16:52
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.
Marsh Posté le 20-11-2009 à 18:34:45
Ah oui j'avais pas fais gaffe à '.' et '..'
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 '/'
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 |
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
Marsh Posté le 20-11-2009 à 18:00:53
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
Donc si vous avez une lanterne ou une lampe de poche en trop Merci
Message édité par Profil supprimé le 20-11-2009 à 18:02:21