Python subprocess返回了非零退出状态-6。

3
这是我在stackoverflow上的第一篇帖子。我希望我的问题不会太蠢 :)
我正在使用Django开发网站,在Django中,我需要获取网站的缩略图,所以我使用https://github.com/coderholic/PyWebShot来实现它。
我在Django shell中使用subprocess运行PyWebShot,它能正常工作,但当我将Django放入apache2并通过URL访问时,则失败了。
以下是错误消息:
CalledProcessError at GIVEN_URL Command '['echo', '$HOME']' returned non-zero exit status -6
实际上,它失败在这个命令上:
subprocess.check_output(['echo', '$HOME'])

我尝试将进程的输出和错误写入文件,但文件总是为空。
我希望有人能给我提示或方向,谢谢!
附注:如果需要更多信息,请告诉我。

2
可能是权限问题,因为部署的应用程序将运行为一个不同于您的用户,并将写入不同于您所写的位置。检查您的 Apache 错误日志,然后尝试复制该场景。 - Noufal Ibrahim
如果有帮助的话,输出包含在异常的output属性中。只需捕获异常,except CalledProcessError as e,并使用属性e.output - John Doe
我检查了Apache错误日志并发现一个奇怪的错误。然后我上网搜索,发现这是一个旧的Python2.7错误。因此,我对它进行了修补,解决了这个问题!谢谢大家。 - Rasiel Chang
3个回答

2

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


1

"echo"命令可能无法在Apache服务器上使用(取决于PATH的值,不一定与手动运行时相同)。然而,运行Apache服务器的帐户未定义$HOME环境变量更有可能。 CGI脚本可以使用一组标准的环境变量(例如,请参见http://www.perlfect.com/articles/cgi_env.shtml或甚至是CGI规范本身)。最后,Apache的mod_env模块允许您将某些环境变量传递给脚本,您可以在httpd.conf中指定这些变量。


0

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

apache日志中报告的错误大致如下:

Fatal Python error: Couldn't create autoTLSkey mapping

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接