我在/var/project
有一个Django应用程序根,并且模型定义为:
class Notice(models.Model):
title = models.CharField('title', max_length=80, default='', blank=True)
info = models.FileField("info", null=True, upload_to='app/files')
class NoticeForm(forms.ModelForm):
class Meta:
model = models.Notice
fields = ('title', 'info')
保存info
字段时,始终会出现如下错误:
Internal Server Error: /app/notice/update/9
PermissionError at /app/notice/update/9
[Errno 13] Permission denied: '/var/project/media/app/files/bm.py'
我认为权限设置是O.K.这是因为:
a)我通过uwsgi通过www-data
用户运行Django应用程序,如下所示:
[uwsgi]
uid = www-data
gid = www-data
chmod-socket = 666
chown-socket = www-data:www-data
b)媒体文件夹:
(www)root@iZ94x23urx9Z:/var/project/media/app# ls -l
total 40
drwxr-xr-x 2 www-data www-data 36864 Jul 19 20:03 avatar
drw-rw-rw- 2 www-data www-data 4096 Jul 19 15:06 files
c)nginx static conf:
location /media {
alias /var/project/media;
}
location /static {
alias /var/project/static;
}
d)我的另一个模型有一个字段tx = models.ImageField("tx",blank=True, null=True,upload_to='app/avatar')
,保存此字段时一切正常。
这个问题困扰了我一整天。究竟是什么问题?
答案 0 :(得分:0)
我尝试this solution,问题解决了。我不知道为什么,但它只是有效。
chgrp -R www-data /var/project
chmod -R g+w /var/project
usermod -a -G www-data root
find /var/project -type d -exec chmod 2775 {} \;
find /var/project -type f -exec chmod ug+rw {} \;