2

努力寻找 Apache22 和 mercurial 的问题根源。一切似乎都正常——制作存储库、正确配置 hgweb.cgi 的文件夹、设置权限等。

主要问题来了。只有当我手动(重新)启动 Apache 时,一切才有效,/usr/local/etc/rc.d/apache22 restart否则,使用service apache22 restart或在整个系统启动时,我正在启动并运行可访问网站的 Apache。但是,一旦尝试访问 Web 界面,它就会在浏览器中显示“内部服务器错误”,并在中显示下一条消息http-error.log

[Fri Apr 20 17:49:40 2012] [error] [client 10.20.30.34] env: 
[Fri Apr 20 17:49:40 2012] [error] [client 10.20.30.34] python
[Fri Apr 20 17:49:40 2012] [error] [client 10.20.30.34] : 
[Fri Apr 20 17:49:40 2012] [error] [client 10.20.30.34] No such file or directory
[Fri Apr 20 17:49:40 2012] [error] [client 10.20.30.34] Premature end of script headers: hgweb.cgi

service我的猜测是这可能是环境变量的问题,但是从运行和直接调用脚本之间有什么区别/usr/local/rc.d/?我错过了什么吗?

4

2 回答 2

2

检查 PATH,看起来 python 不在您的路径中。也许将 /usr/local/bin 添加到 www 用户的路径

于 2012-04-20T16:22:58.780 回答
0

解决方案实际上是让用户运行 httpd (在我的情况下为www )以调整$PATH。但这对每个人来说可能并不明显,所以这就是我所做的:

使用内容创建/usr/local/etc/apache22/envvars.d/path.env

#!/bin/bash
export PATH=$PATH:/usr/local/bin:/usr/local/sbin

这需要 Apache加载env_module,但这看起来像是在默认配置中加载的标准模块。

于 2014-08-15T12:40:24.477 回答