2012-09-16 3 views
0

다시 추적 여기OSError [errno는이 13] 권한 나는 아파치/mod_wsgi에 서버와 장고에서로드 파일을 업로드하려고 할 때 다음

Environment: 


Request Method: POST 
Request URL: http://mysite.com/admin/content/author/add/ 

Django Version: 1.4.1 
Python Version: 2.7.3 
Installed Applications: 
('grappelli', 
'filebrowser', 
'south', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.admin', 
'django.contrib.admindocs', 
'tinymce', 
'mailchimp', 
'content', 
'categorization', 
'mptt') 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware') 


Traceback: 
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response 
    111.       response = callback(request, *callback_args, **callback_kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in wrapper 
    366.     return self.admin_site.admin_view(view)(*args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view 
    91.      response = view_func(request, *args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func 
    89.   response = view_func(request, *args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py" in inner 
    196.    return view(request, *args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapper 
    25.    return bound_func(*args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view 
    91.      response = view_func(request, *args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in bound_func 
    21.     return func(self, *args2, **kwargs2) 
File "/usr/local/lib/python2.7/dist-packages/django/db/transaction.py" in inner 
    209.     return func(*args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in add_view 
    955.     self.save_model(request, new_object, form, False) 
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in save_model 
    709.   obj.save() 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" in save 
    463.   self.save_base(using=using, force_insert=force_insert, force_update=force_update) 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" in save_base 
    551.     result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw) 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py" in _insert 
    203.   return insert_query(self.model, objs, fields, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" in insert_query 
    1576.  return query.get_compiler(using=using).execute_sql(return_id) 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py" in execute_sql 
    909.   for sql, params in self.as_sql(): 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py" in as_sql 
    872.     for obj in self.query.objs 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/files.py" in pre_save 
    249.    file.save(file.name, file, save=False) 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/files.py" in save 
    86.   self.name = self.storage.save(name, content) 
File "/usr/local/lib/python2.7/dist-packages/django/core/files/storage.py" in save 
    45.   name = self._save(name, content) 
File "/usr/local/lib/python2.7/dist-packages/django/core/files/storage.py" in _save 
    168.     os.makedirs(directory) 
File "/usr/lib/python2.7/os.py" in makedirs 
    150.    makedirs(head, mode) 
File "/usr/lib/python2.7/os.py" in makedirs 
    157.  mkdir(name, mode) 

Exception Type: OSError at /admin/content/author/add/ 
Exception Value: [Errno 13] Permission denied: '//media/uploads' 

입니다 던져, 부인은 내 모델입니다

class ArticleImage(models.Model): 
title = models.CharField(
    verbose_name = _(u'Title'), 
    help_text = _(u'The title for this article image'), 
    max_length = 255, 
) 
alt_text = models.CharField(
    verbose_name = _(u'Alt. Text'), 
    help_text = _(u'The alt text for this article image'), 
    max_length = 255, 
) 
image = models.ImageField(
    verbose_name = _(u'Image'), 
    upload_to = 'uploads/articleimages/' 
) 
article = models.ForeignKey(
    Article, 
    verbose_name = _(u'Article'), 
    help_text = _(u'The article to which this image belongs'), 
) 
class Meta: 
    verbose_name = _(u'Image') 
    verbose_name_plural = _(u'Images') 

def __unicode__(self): 
    return u'%s'%self.title 

여기에 관련된 설정

다음
MEDIA_ROOT = os.getcwd() + '/media/' 
MEDIA_URL = '/media/' 
DEBUG = False 

미디어 디렉토리 내 httpd.conf 파일입니다

Alias /media/ /home/quinton/Sites/prod/media/ 

<Directory /home/quinton/Sites/prod/media> 
Order deny,allow 
Allow from all 
</Directory> 

로컬로 모든 것을 실행할 때 이것은 문제가되지 않습니다. 내 서버로 밀고 아파치를 재시작 할 때만 이런 일이 일어납니다. 미디어 디렉토리에 대한 파일 권한을 777로 변경하려고 시도했지만 여전히 운이 없습니다.

+0

당신은 확신'os.getcwd()', 당신이 기대하는 무엇을주고있다 아니라 상위 디렉토리를? 또한 WSGI 데몬을 설정하는 httpd.conf의 행을 표시하십시오. –

+0

나는 완전한 바보 같다고 느낍니다. 나는이 규범에 내 영혼을 1 시간 반 동안 부어왔다. 대단히 감사합니다! –

+0

@QuintonRobbins가 그 답 이었습니까? 그렇다면 MikeDeSimone이 답변으로 의견을 게시하도록 허용해야한다고 생각합니다. – jsvk

답변

1

os.getcwd() 당신이 원하는 것을 제공하지 않을 수도 있습니다. 보장은 작업 디렉토리는, 말하자면, 당신의 settings.py 파일에있는 하나입니다 없습니다

당신이 당신의 설정 파일의 위치에서 작업 할 경우, 당신은 당신의 settings.py 파일에 os.path__file__를 사용할 수 있습니다.

보너스로
import os.path 
# Get the directory the settings.py file is located in. 
BASE_DIR = os.path.abspath(os.path.dirname(__file__)) 

이 프로젝트의 다른 모듈뿐만 아니라이를 사용할 수 있습니다

from django.conf import settings 
print "Base directory:", settings.BASE_DIR 
관련 문제