【问题标题】:Cannot upload files with Django and apache modwsgi无法使用 Django 和 apache modwsgi 上传文件
【发布时间】:2012-02-22 13:16:48
【问题描述】:

由于 html5 视频标签的一些问题,我最近不得不放弃 Django 开发服务器并转移到 apache。

在尝试将视频上传到媒体文件夹时,更改带来了 [Errno 13] Permission denied 错误。

我已经使用 chmod 将媒体文件夹递归设置为 777,并使用 chgrp 授予 www-data 组权限;这是执行ls -lha media/时的输出

total 12K
drwxrwxrwx  3 esteban www-data 4,0K 2012-02-22 06:44 .
drwxr-xr-x 10 esteban esteban  4,0K 2012-02-22 07:35 ..
drwxrwxrwx  3 esteban www-data 4,0K 2012-02-13 10:12 generated

我还在 httpd.conf 文件中写了如下指令:

<Directory /home/esteban/python_projects/video_transform/media>
Options +Indexes
Order allow,deny
Allow from all
</Directory>

这允许我在浏览到http://localhost/media 时列出文件夹内容,但上传还没有成功。

有什么想法吗??

编辑:在这一行抛出异常:

destination = open('media/' + filename, 'wb+')

【问题讨论】:

  • 嗯,您是否尝试过使用绝对路径而不是相对路径,只是为了测试?
  • @Paulo 刚刚做到了,就是这样。我只是不喜欢在我的代码中燃烧绝对路径。反正就是这样

标签: django apache mod-wsgi


【解决方案1】:

按照评论中的建议使用绝对路径。阅读文档:

http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Application_Working_Directory

为什么。

【讨论】:

  • 完全正确。当 Django 应用程序部署到 apache 时,我必须使用绝对路径从我的 Python 代码访问文件系统中的任何内容。非常感谢
【解决方案2】:

我将测试在您的 Apache 配置中切换 Order 指令。在当前情况下,虽然没有明确定义,但拒绝指令位于 Allow 指令之后,并有效地阻止了所有流量。像这样切换 Order 指令应该可以解决问题:

<Directory /home/esteban/python_projects/video_transform/media>
Options +Indexes
Order deny,allow
Allow from all
</Directory>

【讨论】:

  • 在尝试访问媒体文件夹中的任何内容时,切换顺序会导致 403 错误。感谢您的回答
猜你喜欢
  • 2018-04-08
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-22
  • 2018-07-27
  • 2016-04-14
  • 2020-11-29
相关资源
最近更新 更多