Python子进程返回非零退出状态-6

3 投票
3 回答
5863 浏览
提问于 2025-04-17 08:09

这是我在StackOverflow上的第一篇帖子。希望我的问题不是太傻:)

我正在用Django开发一个网站,在Django里我需要获取网站的缩略图,所以我使用了https://github.com/coderholic/PyWebShot来实现这个功能。

我在Django的命令行中用子进程运行PyWebShot,效果很好,但当我把Django放到apache2上,并通过网址访问时,它就失败了。

这是错误信息:

在GIVEN_URL处发生了CalledProcessError

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

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

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

我尝试把进程的输出和错误写入一个文件,但那个文件总是空的。

我希望有人能给我一些建议或方向,谢谢!

附言:如果需要更多信息,请告诉我。

3 个回答

0

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

在apache日志中报告的错误大致是这样的:

Fatal Python error: Couldn't create autoTLSkey mapping
1

“echo”命令可能在Apache服务器上无法使用,这取决于PATH的设置,可能和你手动运行时的环境不一样。不过,更可能的原因是运行Apache服务器的账户没有定义$HOME这个环境变量。对于CGI脚本,有一套标准的环境变量可以使用(你可以查看例如这个链接,或者直接看CGI规范)。最后,Apache的mod_env模块可以让你把一些环境变量传递给脚本,你需要在httpd.conf文件中指定这些变量。

2

我查看了Apache的错误日志,发现了一个奇怪的错误。之后我上网查了一下,发现这是一个老旧的Python 2.7的错误。于是我进行了修补,问题就解决了!谢谢大家。

撰写回答