【问题标题】:Django unable to upload into 777 permission folderDjango 无法上传到 777 权限文件夹
【发布时间】:2018-12-17 06:27:25
【问题描述】:

将文件上传到媒体文件夹时收到错误消息。 我已经将所有内容设置为 777 权限并将所有者更改为 apache。 加载媒体和静态文件很好。 我正在使用带有 httpd 服务的 centos7。 请帮我弄清楚。

有关附加信息,通过硬编码写入文件可以正常工作。

The error looks like

这是错误信息:

Traceback:

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/contrib/admin/options.py" in wrapper
  552.                 return self.admin_site.admin_view(view)(*args, **kwargs)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
  149.                     response = view_func(request, *args, **kwargs)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  57.         response = view_func(request, *args, **kwargs)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/contrib/admin/sites.py" in inner
  224.             return view(request, *args, **kwargs)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/contrib/admin/options.py" in change_view
  1512.         return self.changeform_view(request, object_id, form_url, extra_context)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper
  67.             return bound_func(*args, **kwargs)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
  149.                     response = view_func(request, *args, **kwargs)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func
  63.                 return func.__get__(self, type(self))(*args2, **kwargs2)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/contrib/admin/options.py" in changeform_view
  1409.             return self._changeform_view(request, object_id, form_url, extra_context)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/contrib/admin/options.py" in _changeform_view
  1449.                 self.save_model(request, new_object, form, not add)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/contrib/admin/options.py" in save_model
  980.         obj.save()

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/contrib/auth/base_user.py" in save
  80.         super(AbstractBaseUser, self).save(*args, **kwargs)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/db/models/base.py" in save
  808.                        force_update=force_update, update_fields=update_fields)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/db/models/base.py" in save_base
  838.             updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/db/models/base.py" in _save_table
  902.                       for f in non_pks]

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/db/models/fields/files.py" in pre_save
  296.             file.save(file.name, file.file, save=False)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/db/models/fields/files.py" in save
  94.         self.name = self.storage.save(name, content, max_length=self.field.max_length)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/core/files/storage.py" in save
  54.         return self._save(name, content)

File "/opt/ezadmin/env/lib/python2.7/site-packages/django/core/files/storage.py" in _save
  347.                     fd = os.open(full_path, flags, 0o666)

Exception Type: OSError at /ezadmin/user/1/change/
Exception Value: [Errno 13] Permission denied: '/opt/ezadmin/media/users/hqdefault.jpg'

【问题讨论】:

  • 目录/opt/ezadmin/media/users是否存在?
  • 另外,其他目录是否也有777的访问权限?
  • 是的。 /opt/ezadmin/media/users 存在。是的,我使用了 chmod -R 和 chown -R
  • SELinux 是否正在运行(如果从命令行运行 getenforce 会输出什么)

标签: python django linux apache centos


【解决方案1】:

你需要通过 SELinux 更改权限

chcon -Rv --type=httpd_sys_rw_content_t /var/html/myweb/uploads

【讨论】:

    【解决方案2】:

    使用django开发服务器后使用apache的陷阱啊...

    检查事项:

    1) 确保您已为 MEDIA 文件夹设置别名,以便正确路由 www.derf.com/media

     Alias /media/ /var/www/derf/media/
    

    2) 确保该目录具有适当的 APACHE 权限。 Apache 不会因为人而盲目地遵循 OS 级别的权限。

    <Directory /var/www/derf/media/
        Require all granted
    </Directory>
    

    【讨论】:

    • 这是我的配置文件。我做对了吗? ibb.co/fssLCT 仍然,权限被拒绝
    • 你可能需要尾随'/'
    • 已经解决了。 SELinux 不允许我将文件上传到服务器。
    • 我错过了 SELinux 部分。这很有意义
    猜你喜欢
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 2020-04-09
    • 2019-07-12
    相关资源
    最近更新 更多