带有 Apache 2.2 错误的 SVN:“禁止您无权访问此服务器上的 /repos”

goz*_*ozu 3 permissions svn centos apache-2.2

我一直在关注这个 svn 安装指南,当我尝试通过转到访问我的测试仓库时http://localhost/repos,我成功进行了身份验证,但后来我得到了这个:

"Forbidden You don't have permission to access /repos on this server"
Run Code Online (Sandbox Code Playgroud)

这是我的 subversion.conf 文件:

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so


<Location /repos>
   DAV svn
   SVNParentPath /var/www/svn/repos
#
#   # Limit write permission to list of valid users.
#   <LimitExcept GET PROPFIND OPTIONS REPORT>
#      # Require SSL connection for password protection.
#      # SSLRequireSSL
#
      AuthType Basic
      AuthName "Subversion repos"
      AuthUserFile /etc/svn-auth-conf
      Require valid-user
#   </LimitExcept>
</Location>
Run Code Online (Sandbox Code Playgroud)

我的路径是 /var/www/svn/repos,这是我的权限

[root@localhost svn]# ls -la repos/
total 32
drwxr-xr-x. 6 apache apache 4096 Aug 24 11:42 .
drwxr-xr-x. 3 root   root   4096 Aug 24 11:42 ..
drwxr-xr-x. 2 apache apache 4096 Aug 24 13:50 conf
drwxr-sr-x. 6 apache apache 4096 Aug 24 11:42 db
-rwxr-xr-x. 1 apache apache    2 Aug 24 11:42 format
drwxr-xr-x. 2 apache apache 4096 Aug 24 11:42 hooks
drwxr-xr-x. 2 apache apache 4096 Aug 24 11:42 locks
-rwxr-xr-x. 1 apache apache  229 Aug 24 11:42 README.txt
Run Code Online (Sandbox Code Playgroud)

如果我去 localhost/repos/README.TXT 我会收到这条消息。

<D:error><C:error/><m:human-readable errcode="20">
Could not open the requested SVN filesystem
</m:human-readable></D:error>
Run Code Online (Sandbox Code Playgroud)

errcode ="2" 取而代之的是任何其他文件名。

selinux 设置为 permissive,我可以看到位于 var/www/html/index.html 的 localhost/index.html 文件就好了。

我已经阅读了几个具有类似问题的 fozen 论坛帖子,但无济于事。

任何想法,将不胜感激!

编辑 1:

我编辑了我的 subversion.conf 文件以更改SVNParentPath /var/www/svn/repos为,SVNParentPath /var/www/svn但它似乎没有效果。

编辑2:

Brain99 搞定了。更改以Location />解决问题,现在我得到了repos - Revision 0: /

Powered by Subversion version 1.6.11 (r934486).

bra*_*n99 6

您似乎混淆了 SVNPath 和 SVNParentPath 指令。

从您发布的内容来看,它似乎/var/www/svn/repos包含一个存储库。在这种情况下,使用

SVNPath /var/www/svn/repos
Run Code Online (Sandbox Code Playgroud)

仅当您有多个存储库时,才应使用 SVNParentPath。然后,每个单独的存储库都应位于您在此处配置的目录的子文件夹中。

因此,要么将其设置为父目录:

SVNParentPath /var/www/svn
Run Code Online (Sandbox Code Playgroud)

或者保持配置不变并将当前存储库移动到子目录,例如 /var/www/svn/repos/myRepo

有关使用 mod_dav_svn 的更多信息,请查看 mod_dav_svn 上的SVN Book 部分