【问题标题】:OSError at /user/1/edit [Errno 13] Permission denied: '/home/django/django_project/media/profile_pics/Square.jpg'/user/1/edit [Errno 13] 处的 OSError 权限被拒绝:'/home/django/django_project/media/profile_pics/Square.jpg'
【发布时间】:2018-03-09 04:10:13
【问题描述】:

据我所知,我的 Django 网站已上线,一切正常,除了当用户尝试上传个人资料图片时出现此错误:

OSError at /user/1/edit
[Errno 13] Permission denied: '/home/django/django_project/media/profile_pics/Square.jpg'

我以前从未见过这个,所以我不确定该怎么做......

这是回溯:

Traceback Switch to copy-and-paste view

/usr/local/lib/python2.7/dist-packages/django/core/handlers/exception.py in inner
            response = get_response(request) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py in _legacy_get_response
            response = self._get_response(request) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py in _get_response
                response = self.process_exception_by_middleware(e, request) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py in _get_response
                response = wrapped_callback(request, *callback_args, **callback_kwargs) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py in view
            return self.dispatch(request, *args, **kwargs) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/contrib/auth/mixins.py in dispatch
        return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py in dispatch
        return handler(request, *args, **kwargs) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/views/generic/edit.py in post
        return super(BaseUpdateView, self).post(request, *args, **kwargs) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/views/generic/edit.py in post
            return self.form_valid(form) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/views/generic/edit.py in form_valid
        self.object = form.save() ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/forms/models.py in save
            self.instance.save() ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/models/base.py in save
                       force_update=force_update, update_fields=update_fields) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/models/base.py in save_base
            updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/models/base.py in _save_table
                      for f in non_pks] ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/models/fields/files.py in pre_save
            file.save(file.name, file.file, save=False) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/models/fields/files.py in save
        self.name = self.storage.save(name, content, max_length=self.field.max_length) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/core/files/storage.py in save
        return self._save(name, content) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/core/files/storage.py in _save
                    fd = os.open(full_path, flags, 0o666) ...
▶ Local vars

更新: 当用户尝试将帖子中的图像上传到帖子提要时也会发生此错误,但是它指向媒体文件夹中的post_pics,而不是像在此错误中那样指向profile_pic 文件夹。

【问题讨论】:

标签: python django python-2.7 ubuntu


【解决方案1】:

您需要授予服务器将文件写入媒体目录的权限。

最简单的方法是使用chwon 命令将media 目录的组更改为您的服务器组-www-data

cd 进入你的项目目录并写下这个:

sudo chown -R <your-username>:www-data media

当然,用您的用户名替换 &lt;your-username&gt;

【讨论】:

  • 只是出于好奇,您的答案与sudo chomp a+rw media 有什么区别?
  • @Garrett chmod a+rw 表示将所有用户 (a) 的文件模式更改为读取 (r) 和写入 (w)。简单来说,就是允许所有用户对media目录进行读写。在我的回答中,我只是将读/写权限授予you 和服务器(www-data)。在 Linux 上更改文件权限的方法还有很多。例如,this answer 将当前用户 (you) 添加到服务器组 (www-data),然后更改组。将权限更改为所有用户的问题在于系统中的所有用户都可以读取/写入该文件。
【解决方案2】:

更改/media目录的权限。

sudo chmod a+rw  media

【讨论】:

  • 很荣幸能为您提供帮助。
猜你喜欢
  • 2018-02-05
  • 2021-01-17
  • 2014-07-15
  • 2015-09-14
  • 1970-01-01
  • 2019-05-17
  • 1970-01-01
  • 1970-01-01
  • 2015-09-29
相关资源
最近更新 更多