mercurial + Apache给出了403错误

问题描述:

我已经在/ home/adil/hg/sample-repo上设置了我的回购并希望通过httpd提供它。我正在关注教程https://www.mercurial-scm.org/wiki/PublishingRepositories#multiple,并创建了hgweb.config文件并将hgweb.cgi(将其更名为index.cgi)复制到/ home/adil/web/mercurial/mercurial + Apache给出了403错误

我的apache配置(/ etc /的httpd/conf目录/ httpd.conf中)看起来是这样的:

ScriptAlias /hg "/home/adil/web/mercurial/index.cgi" 

<Directory "/home/adil/web/mercurial"> 
    Order allow,deny 
    Allow from all 
    AllowOverride All 
    Options ExecCGI 
    AddHandler cgi-script .cgi 
</Directory> 

的index.cgi,hgweb.config和所有迪尔斯向上具有世界阅读权限

http://localhost/hg提供了一个 “403禁止” 错误。 WTF?

PS:Apache的错误日志显示: [太阳10月17日六点45分38秒2010] [错误] [客户端1.2.3.4](13)权限被拒绝:访问/ HG否认

+0

error.log文件说什么?它可能包含更多关于访问被拒绝的详细信息。 – 2010-10-17 11:42:56

+0

我用错误消息更新了我的问题。如上所述,只是权限被拒绝。它不会提供更多信息。 – Adil 2010-10-17 12:02:35

+0

我会用更多的方法来更新答案来检查Apache的用户。 – 2010-10-17 12:37:58

也许Apache的过程所有者无权访问/home/adil/web/mercurial

另外,做检查Apache的错误日志(通常位于/var/log/httpd-error.log或相似的一些地方。它会给你额外的信息,调试安装

要检查什么的运行Apache的过程中,用户做的事:。

$ ps aux | grep http 

ps应该表现出什么是运行Apache的用户

此外,如果有帮助,这是我做的方式:

ScriptAliasMatch  ^/hg(.*)  /usr/local/share/mercurial/www/hgweb.cgi$1 
<Directory /usr/local/share/mercurial/www> 
    Options ExecCGI FollowSymLinks 
    AllowOverride None 
    Options None 
    Order allow,deny 
    Allow from all 
</Directory> 
+0

Pablo,它已经读取了所有目录的权限。我如何检查用户'apache'是否可以访问它? – Adil 2010-10-17 12:04:56

+0

它是否具有存储库的权限?或只是为CGI脚本? – 2010-10-17 14:52:33

我不是任何方式的Apache配置专家,但我遇到了这个错误,并设法摆脱它。

我做之前,我得到这个错误在我的error_log:client denied by server configuration: /Users/svn/Public/hg/hgwebdir.cgi

这是我原来的配置:

ScriptAlias /hg "/Users/svn/Public/hg/hgwebdir.cgi" 
<Location /hg> 
    AuthType Basic 
    AuthName "Mercurial Repositories" 
    AuthUserFile /Users/svn/Public/hg/auth 
    Require valid-user 
</Location> 

我加了一些选项:

ScriptAlias /hg "/Users/svn/Public/hg/hgwebdir.cgi" 
<Location /hg> 
    Options ExecCGI FollowSymLinks 
    Options None 
    Order allow,deny 
    Allow from all 

    AuthType Basic 
    AuthName "Mercurial Repositories" 
    AuthUserFile /Users/svn/Public/hg/auth 
    Require valid-user 
</Location> 

我试过Pablo的版本 - 我遇到的一个问题是“ScriptAliasMatch ^/hg(。*)”捕获了呈现浏览器回购资源管理器所需的hg徽标和样式表。我不知道这是否适用于hgweb.cgi,因为我没有使用那个,但在使用hgwebdir.cgi时肯定是个问题。具体来说:script not found or unable to stat: /Users/svn/Public/hg/hgweb.cgilogo.png