3

我有一个使用 django 框架和 mod_wsgi 运行 python 代码的 apache httpd 服务器。我的 view.py 我需要进行子进程调用来执行另一个 python 文件,该文件在进程中需要创建一些目录。

但是,无论我尝试在哪里创建目录,我都会收到 OSERROR 13: Permission denied 。

只有在 /tmp 中创建目录是成功的。

谁能指导我如何解决这个问题?

提前致谢!!!

编辑: 我在 serverfault.com 中找到了答案。这里仅供参考 apache2 在 root 下运行,但它分叉在“www-data”组下运行的进程。所以创建一个目录,你想在其中创建文件/目录

sudo mkdir /srv/www/writable

更改组

sudo chgrp www-data /srv/www/writable

授予组写入权限

sudo chmod g+w /srv/www/writable

你完成了。现在您可以使用 apache2 运行的脚本在此目录中创建任何文件/目录

4

2 回答 2

3

可能值得补充的是,这也可以在 Python 中实现

import os
import pwd

path = '/var/www/myapp/foo/'
if not os.path.exists(path):
        os.makedirs(path) # creates with default perms 0777
        uid, gid =  pwd.getpwnam('root').pw_uid, pwd.getpwnam('www-data').pw_uid
        os.chown(path, uid, gid) # set user:group as root:www-data
于 2013-01-09T10:34:26.123 回答
1

我在 serverfault.com 中找到了答案。这里供参考

apache2 在 root 下运行,但它分叉在“www-data”组下运行的进程。所以创建一个目录,你想在其中创建文件/目录

sudo mkdir /srv/www/writable 更改组

sudo chgrp www-data /srv/www/writable 授予组写入权限

sudo chmod g+w /srv/www/writable 你就完成了。现在您可以使用 apache2 运行的脚本在此目录中创建任何文件/目录

于 2012-08-05T11:08:46.853 回答