2011-12-11 83 views
3

这是我在stackoverflow上的第一篇文章。我希望我的问题不是愚蠢的:)Python子进程返回非零退出状态-6

我使用django开发一个网站,在Django里面我需要抓住网站的缩略图,所以我用https://github.com/coderholic/PyWebShot来实现它。

我在django shell中运行PyWebShot并且它的子流程很好,但是当我把django放入apache2并用url访问它时,它就失败了。

以下是错误消息:

CalledProcessError在GIVEN_URL

命令 '[' 回声 ' '$ HOME']' 返回非零退出状态-6

它实际上在这个命令上失败:

subprocess.check_output(['echo', '$HOME']) 

我试过写输出和e将进程的错误转换为文件,但文件始终为空。

我希望有人能给我一个笔记或方向,谢谢!

ps:如果需要更多信息,请让我知道。

+2

可能是一个权限问题,因为部署的应用程序将运行作为比你其他用户,并会写入到不同的区域不到哪里你写信给。检查你的Apache错误日志,然后尝试复制该场景。 –

+0

如果有帮助,输出包含在例外'输出'属性中。只需要捕获异常,'除了CalledProcessError as e',并使用属性'e.output'。 –

+0

我检查Apache错误日志并发现一个奇怪的错误。之后,我在网上冲浪,发现它是一个旧的python2.7错误。所以我修补它然后解决这个问题!谢谢大家。 –

回答

2

我检查Apache错误日志并发现一个奇怪的错误。之后,我在网上冲浪,发现它是一个旧的python2.7错误。所以我修补它然后解决这个问题!谢谢大家。

1

“回声”命令可能不可用于apacher服务器(取决于PATH的值,不一定与手动运行时相同)。更有可能的是,$ HOME env var没有为运行Apache服务器的帐户定义。有一套可用于CGI脚本的标准变量(参见例如http://www.perlfect.com/articles/cgi_env.shtml或甚至CGI spec itself)。最后,apache的mod_env模块允许您将一些env vars传递给脚本,您可以在httpd.conf中指定这些模块。

0

这很可能是Python 2.7.2中报告的bug。升级到新版本应该可以解决问题。

在Apache日志报告的错误是沿着线的东西:

Fatal Python error: Couldn't create autoTLSkey mapping 
相关问题