Vous n'êtes pas identifié(e).
Bonjour,
J'ai des soucis pour faire un upload d'image dans le sous répertoire images qui est dans le répertoire site_media qui est pourtant public.
Voici mes settings et mon code:
settings.py
MEDIA_ROOT = '/home/mon_compte/mmb/public/site_media/'
MEDIA_URL = '/site_media/'
models.py
class Membre(models.Model):
ImagePortrait = models.FileField(upload_to = "images/", blank = True, null=True)
ImageLarge = models.IntegerField(blank = True, null=True)
ImageHaut = models.IntegerField(blank = True, null=True)
def save(self, *args, **kwargs):
super(Membre, self).save(*args, **kwargs)
im = PImage.open(os.path.join(MEDIA_ROOT, self.ImagePortrait.name))
self.ImageLarge, self.ImageHaut = im.size
admin.py
class MembreAdmin(admin.OSMGeoAdmin):
...##
def save_model(self, request, obj, form, change):
obj.user = request.user
obj.save()
Lorsque j'upload une image légère, j'ai une erreur de droits d'accès :
Exception Type: OSError
Exception Value: [Errno 13] Permission denied: '/home/mon_compte'
Je pense que cette une histoire de droits mais je préfère avoir votre avis pour ne pas créer des problèmes de sécurité. là il faut avouer que je suis au bout de mes compétences, avez-vous une idée d'où cela peut bien venir ?
Merci
Hors ligne
Le 20 août 2012 à 13:42, polo <carrotpaul _AT_ yahoo.fr> a écrit :
> Bonjour,
Bonjour
> Exception Type: OSError
> Exception Value: [Errno 13] Permission denied: '/home/mon_compte'
Je suppose que c'est un problème que tu rencontres en production et non en développement ?
Si c'est la cas, il faudrait que l'on sache de quel façon tu fais tourner Django.
En faisant des suppositions et vu ton message, tu le fais tourner dans un apache et/ou nginx. Le souci dans ce cas est qu'apache tourne avec un utilisateur différent de "mon_compte". Il te faudra donc ouvrir ton répertoire media (et l'ensemble de l'arborescence à partir de là) à la création de fichier venant de tiers.
Cordialement,
Xavier Ordoquy,
Linovia.
Hors ligne
Merci pour cette réponse,
effectivement je suis en production, je suis chez un hébergeur qui tourne sous apache je crois. Mon hébergeur est alwaysdata. Déjà que je débute sous Django, j'avoue que je suis un peu perdu par rapport à tout ce qui est configuration serveur...
Par contre, j'ai accès a un fichier apache.conf qui doit permettre de modifier la configuration d'apache.
Avez-vous une procédure permettant de modifier cette configuration et qui me permettrait d'uploader des images ?
Merci
Hors ligne
Salut,
Pour la mise en production chez Alwaysdata, je te recommande d'utiliser
le mode WSGI
Tu créé le fichier ~/ton_projet_django/public/django.wsgi
# -*- coding: utf-8 -*-
import os, sys
activate_this = os.path.join(os.path.dirname(__file__),
'../apps/bin/activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
_PROJECT_DIR =
os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, _PROJECT_DIR)
sys.path.insert(0, os.path.dirname(_PROJECT_DIR))
_PROJECT_NAME = _PROJECT_DIR.split('/')[-1]
os.environ['DJANGO_SETTINGS_MODULE'] = "%s.settings" % _PROJECT_NAME
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Sinon n'hésite pas à faire un ticket, les administrateurs sont très
réactifs et tu auras une réponse très rapidement.
++
Rémy
Le 20/08/2012 15:37, polo a écrit :
> Merci pour cette réponse,
>
> effectivement je suis en production, je suis chez un hébergeur qui tourne
> sous apache je crois. Mon hébergeur est alwaysdata. Déjà que je débute
> sous Django, j'avoue que je suis un peu perdu par rapport à tout ce qui
> est configuration serveur...
>
> Par contre, j'ai accès a un fichier apache.conf qui doit permettre de
> modifier la configuration d'apache.
>
> Avez-vous une procédure permettant de modifier cette configuration et qui
> me permettrait d'uploader des images ?
>
> Merci
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
Hors ligne
Salut,
Ton problème est un problème de permission d'écriture sur le chemin que tu a
renseigné pour tes médias dans MEDIA_ROOT.
> MEDIA_ROOT = '/home/mon_compte/mmb/public/site_media/'
D'ailleurs le message est vraiment explicite :
> Exception Type: OSError
> Exception Value: [Errno 13] Permission denied: '/home/mon_compte'
Ton instance de Django n'a pas la permission d'écrire dans "/home/mon_compte".
"/home/mon_compte" c'est un assez étrange, je suppose que tu a modifié les
chemins pour cacher ton nom d'utilisateur sur la ML, parce que si ce n'est pas
le cas je doute que tu ai un compte utilisateur nommé "mon_compte"
D'ailleurs si on regarde ton MEDIA_ROOT, on dirait que ton home utilisateur
sur le serveur serait plutot /home/mmb/public/site_media/ si c'est bien le cas
tu a juste a modifier ton MEDIA_ROOT, reloader ton Apache et ça devrait être
ok.
Si ce n'est toujours pas bon, vérifie les permissions Chmod sur ce fameux
chemin '/home/mon_compte'.
C'est un hébergement mutualisé que tu a chez alwaysdata ?
Hors ligne
Effectivement David, l'erreur venait de l'orthographe du nom de compte ...J'ai plusieurs comptes du coup en faisant la bascule de mon projet, tout n'était pas paramétré comme il le fallait.
Merci de votre patience,
Comme quoi, l'adage qui dit que "99% des bugs informatiques se passent entre l'écran et le dossier de la chaise" se vérifie tout les jours.
Dernière question à Rémy HUBSCHER, est-ce que le passage de fcgi à wsgi permet un réel gain de performance ?
Bonne fin de journée et encore merci pour votre réactivité
Hors ligne