8797 sujets

Développement web côté serveur, CMS

Bonjour bonjour !

J'ai un petit problème quant à la suppression de fichiers avec la fonction unlink de PHP.

En fait j'ai fait sur mon site un panneau d'administration. Une des parties de celui-ci me permet de lister les fichiers présent pour une certaine personne et me donne la possibilité de choisir les fichiers que je veux éventuellement supprimer de la base de données et du serveur en même temps.

J'ai donc eu recours à la fonction unlink et voici mon code de suppression en question.




$chemin2= "client/".$societe."/depot/"; //chemin pour acceder au dossier
$chemin = "client/".$societe."/depot/".$nom_depot; //chemin contenant le nom de fichier à supprimer.

$ouverture= opendir("$chemin2"); //on ouvre le dossier
chmod ($chemin, 0777); //onpasse le fichier en niveau de sécu 777
unlink($chemin); //on efface
closedir($ouverture); //on ferme le dossier



$suppression = "DELETE FROM krea_depot_krea WHERE id = $suppr";
$suppr1 = mysql_query($suppression) or die(mysql_error())

echo'<script language="Javascript">
		alert("Depot supprim\351 avec succ\350s !");
		window.location.replace("liste_depot_kreazone.php?idclient='."$idclient".'");
		</script>';



La suppression de la base fonctionne nikel par contre pour la suppression du serveur il y a un petit soucis.
En fait lorsque je lance cette fonction, j'ai ma petite fenêtre javascript qui me spécifie bien que j'ai réussi à supprimer. Je regarde ma base aucun problème, mais lorsque je vais sous Filezilla et que je regarde dans le dossier en question, le fichier est toujours là. Je me déconnecte et me reconnecte, il est toujours là, par contre si je me connecte, que je me rend dans le dossier et que j'appuie sur le bouton actualiser de filezilla, à ce moment là, le fichier disparait.

Donc, est ce un problème de la fonction ? est ce un problème de filezilla qui me montre comme si le fichier était encore présent alors que en fait il n'est déjà plus là ?

Je tiens à préciser que lorsque je testais ma fonction en local sous easyphp, elle fonctionnait impeccable autant vis à vis de la bdd mais aussi vis à vis de la suppression de fichier ou dossier qui se supprimaient comme voulu.


Merci d'avance.

Arnaud S.
Modifié par bibi-arnaud (07 Jul 2008 - 09:21)
It's not a bug, it's a feature Smiley cligne
FileZilla garde une liste des dossiers en cache jusqu'à ce qu'elle soit actualisée manuellement. Il me semble qu'on peut désactiver cette option, mais du coup tu n'auras plus l'arborescence des dossiers distants, ou alors elle sera recréée à chaque connection, je ne sais plus.

PS : Rien à voir, donc, avec la fonction unlink() de PHP Smiley cligne
Je pense pour un "problème" d'affichage de filezilla plutot que d'une erreur de ton script PHP.
Tu peux vérifier la présence du fichier avec file_exists() pour t'en assurer.

Au passage dans ton code

$ouverture= opendir("$chemin2"); //on ouvre le dossier
chmod ($chemin, 0777); //onpasse le fichier en niveau de sécu 777
unlink($chemin); //on efface
closedir($ouverture); //on ferme le dossier


L'ouverture et la fermeture du dossier ne sont pas utiles dans ce cas d'après moi, tu peux très bien tout simplement unlink() ton fichier directement.
Et changer les droits d'accès du fichier avant de le supprimer ne me parait très utile non plus