【发布时间】:2012-01-08 17:11:19
【问题描述】:
自从我升级到 ubuntu 到 11.10 后,我曾经使用 python subprocess.Popen 来创建一些 shell 命令的 django 应用程序不再工作
为了简化问题,我把错误代码放到了wsgi脚本中:
import os
import sys
from subprocess import Popen,PIPE
p=Popen(['/usr/bin/id'],stdout=PIPE,stderr=PIPE)
comm=p.communicate()
print comm,p.returncode
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
如果我直接通过 python 运行这段代码,它可以工作:
$ python -V
Python 2.7.2+
$ python django_wsgi.py
('uid=1002(www) gid=1002(www) groups=1002(www)\n', '') 0
如果我通过 apache 运行此代码(我只是将相关 URL 放入浏览器中),在 apache 日志中,我得到:
[Tue Nov 29 11:34:38 2011] [error] ('', '') -6
这个错误'-6'是什么???
问题在于我的开发服务器(Ubuntu 10.04,几乎相同的 apache/wsgi 版本,相同的 apache 配置文件,相同的环境变量,但使用 python 2.6.5)运行良好:
[Tue Nov 29 11:29:10 2011] [error] ('uid=1000(www) gid=1000(www) groups=1000(www)\\n', '') 0
你知道为什么 Popen 在 python 2.7 中不再通过 apache 工作了吗?
【问题讨论】: