Page 1 sur 1
fonction unlink() qui marche en local seulement...
Posté : 19 sept. 2005, 12:58
par bontbont
Bonjour,
je viens de mettre en ligne mon premier site (de petites annonces avec photos), et j'effectue des tests. L'internaute qui se connecte peut déposer ou supprimer des photos sur son annonce. Pour le dépot il n'y a pas de probleme, par contre pour la suppression, j'utilise la fonction unlink(), et cela me retourne le message d'erreur suivant :
Warning: unlink(chemin_de_mon_image): Permission denied in d:\www\monsite.com\htdocs\depot_annonce_final.php on line 114
A noter que cela fonctionne très bien en local...
D'apres mon hébergeur, le chemin_de_mon_image serait mauvais, mais je suis sur qu'il est bon car sinon le message d'erreur serait différent...
Quelqu'un pourrait-il m'aider à comprendre ??
Merci pour vos réponses
Cordialement
Posté : 19 sept. 2005, 14:07
par iclo
si tu es sur un serveur, tu dois renseigner le chemin depuis la racine de ton site, et non depuis un disque
Posté : 19 sept. 2005, 14:58
par bontbont
merci iclo, je viens d'essayer mais le probleme reste identique.
La racine de mon site est htdocs
1/ J'ai essayé le chemin suivant : d:\www\monsite.com\htdocs\images_int\test\test_tmp\401.jpg
cela me donne :
Warning: unlink(d:\www\monsite.com\htdocs\images_int\test\test_tmp\401.jpg): Permission denied in d:\www\monsite.com\htdocs\depot_annonce_final.php on line 114
2/ ou alors : htdocs\images_int\test\test_tmp\401.jpg
cela me donne :
Warning: opendir(): Unable to access htdocs\images_int\test\test_tmp\ in d:\www\monsite.com\htdocs\depot_annonce_final.php on line 109
Warning: opendir(htdocs\images_int\test\test_tmp\): failed to open dir: No such file or directory in d:\www\monsite.com\htdocs\depot_annonce_final.php on line 109
Warning: readdir(): supplied argument is not a valid Directory resource in d:\www\monsite.com\htdocs\depot_annonce_final.php on line 111
Warning: closedir(): supplied argument is not a valid Directory resource in d:\www\monsite.com\htdocs\depot_annonce_final.php on line 118
3/ ou alors : images_int\test\test_tmp\401.jpg (ce chemin marche en local)
cela me donne :
Warning: unlink(images_int\test\test_tmp\401.jpg): Permission denied in d:\www\monsite.com\htdocs\depot_annonce_final.php on line 114
je pense que le chemin de mes images est correct dans le 1er et le 3eme cas puisque j'ai un message d'erreur pour chaque image trouvée (si j'ai 3 images à supprimer dans mon répertoire, il va s'afficher 3 fois le message d'erreur avec le nom de l'image (ici 401.jpg).
Pour le "d:\", je sais pas d'ou il sort, surement le nom du disque sur lequel se trouve mon site chez l'hébergeur (007hebergement)...
Si quelqu'un a une autre idée... moi je pensais a un probleme de droits pour la suppression qui viendrait de chez l'hébergeur...
Merci pour votre aide.
Posté : 19 sept. 2005, 16:24
par Xenon_54
Bonjour,
si tu es sur un serveur, tu dois renseigner le chemin depuis la racine de ton site, et non depuis un disque
Faux, il suffit d'avoir les bonnes permissions sur les fichiers.
Donc selon moi, la personne n'a tout simplement pas donné les autorisations à l'utilisateur du serveur de supprimer les fichiers demandés.
Posté : 19 sept. 2005, 16:45
par bontbont
je viens d'envoyer un mail a mon hébergeur demandant de vérifier si j'ai bien les droits de suppressions de fichiers... je vous tiens au courant.
encore merci.
Posté : 19 sept. 2005, 19:16
par rami
C'est à toi de donner les droits sur le fichier uploadé dans ton script d'upload (voir du côté de
chmod())
Posté : 19 sept. 2005, 21:37
par bontbont
oui mais si ca marche en local, c'est que j'ai attribué les bons droits, alors pourquoi pas chez l'hébergeur ?
Posté : 19 sept. 2005, 21:48
par rami
Parce que tu dois certainement développé sous Windows, qui lui n'en a rien à faire des droits sur les fichiers, alors que ton hébergeur doit être sous Linux, et donc gère finement les droits d'accès sur les fichiers.
Posté : 20 sept. 2005, 00:10
par bontbont
toujours pas de réponse de l'hébergeur... Pour répondre à rami, je n'avais pas utilisé chmod (). Je viens donc de l'insérer dans mon code mais pas de changement, toujours le meme message (merci quand meme)...
en attendant voici mon code :
//creation du repertoire pour les futures images au nom de l'internaute
$chemin='images_int/'.$pseudo;
mkdir($chemin, 0777);
//creation du repertoire tmp pour les futures images avant validation
$chemin='images_int/'.$pseudo.'/'.$pseudo.'_tmp';
mkdir($chemin, 0777);
ici mon code pour inserer la photo dans le répertoire pseudo_tmp, puis quand l'internaute valide sont annonce je vide le répertoire pseudo_tmp (après les avoir copiées dans un répertoire définitif) :
//Vider le dossier pseudo_tmp
$rep = 'images_int/'.$pseudo.'/'.$pseudo.'_tmp/';
$dir = opendir($rep);
while ($f = readdir($dir)) {
if(is_file($rep.$f)) {
chmod ($rep.$f, 0755);
unlink($rep.$f);
}
}
//fermer le dossier
closedir($dir);
je suis donc toujours a la recherche d'une solution... merci a tous ceux qui essaient de m'aider.
Posté : 20 sept. 2005, 00:27
par bontbont
petit complément :
voici les permissions de mes dossiers et fichiers (que je peut voir avec FileZilla) :
pour les 2 dossiers crées : drwxrwxrwx
pour mes images : -rwxrwxrwx
d'après la doc que je viens de lire j'ai tous les droits (propriétaire, groupe, autres)...
Posté : 20 sept. 2005, 17:45
par bontbont
bonjour a tous,
ca y est, j'ai réglé mon probleme !!
j'ai activé les droits en écriture sur le serveur et maintenant ca marche (un bouton dans mon espace perso sans aucune explication et avec "une menace" de ne plus pouvoir revenir en arriere, bref quand on connait pas on touche pas !!).
C'est la premiere fois que je met un site en ligne, je ne connais donc pas tout. Depuis que j'ai fais la mise en ligne je peux écrire sur le serveur, je ne voyais donc pas l'intéret d'activer les droits en écriture pour pouvoir supprimer (pour moi c'était déjà fait).
Encore merci a tous !!!
Cordialement