我正在尝试在Apache上使用DAVconfigurationSVN服务器。 根据互联网资源(例如https://help.ubuntu.com/10.04/serverguide/subversion.html ),在Ubuntu上安装所有这些应该是非常简单的。 而且,在安装和创build第一个存储库期间,没有任何错误,除了在项目文件的初始导入期间(我通过HTTP访问存储库)的问题。 我在SVN客户端(KDESVN)中看到的是以下消息:
Server sent unexpected return value (500 Internal Server Error) in response to PROPFIND request for 'http://.../svn/myproject/trunk/test.txt'
在Apache的error.log
中没有任何关于这个错误的信息,而且在DAV中我configuration了自定义日志svn.log
。 在access.log
有几行logging活动,这其中包括:
{IP} - - [18/Mar/2014:22:47:24 -0300] "PROPFIND /svn/myproject/trunk/test.txt HTTP/1.1" 500 1150 "-" "SVN/1.7.9/SvnQt wrapper client neon/0.29.6"
没有更多的细节。
我的configuration如下。
/etc/apache2/mods-enabled/dav_svn.conf:
<Location /svn> DAV svn SVNParentPath /var/www/svn-repos SVNListParentPath On #SVNPathAuthz Off AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/passwd Require valid-user LimitXMLRequestBody 0 </Location> CustomLog ${APACHE_LOG_DIR}/svn.log "%t %u %{SVN-ACTION}e" env=SVN-ACTION
/var/www/svn-repos
权限:
sudo chmod -R 777 /var/www/svn-repos sudo chown -R www-data:www-data /var/www/svn-repos
有一个用户添加到/etc/apache2/passwd
哪些数据用在KDESVN和命令行中--username
和--password
参数。
版本:
我能够创build初始库结构(/ trunk,/ tags,/ branches),使用file:///...
在本地提交,并且能够在客户端或浏览器中列出它。 但是当我使用http://
从远程机器commit
时,出现上述错误。
我尝试了每个解决scheme,我可以find这个错误:
DAV svn \ SVNParentPath /var/www/svn-repos
loglevel
以在apache2.conf
进行debug
– 在日志中我看不到更多有用的信息 没什么帮助。 还是一样的错误。
有没有一种configuration更好的日志logging的方法,只是看看这个神秘的500 Internal Server Error
什么? 如何找出我错过了什么?
为了您的build议,请提前致谢。
尝试启用重写日志来validation您没有与dav_svn干扰的mod_rewrite规则。 对于usvn,我遇到了同样的症状。
您可以启用重写日志logging(确保在完成debugging后禁用):
RewriteLog "/usr/local/var/apache/logs/rewrite.log" RewriteLogLevel 3
我通过在我的.htaccess文件中添加一行来解决我的问题,以排除dav_svn存储库的子目录:
<Files *.ini> Order Allow,Deny Deny from all </Files> php_flag short_open_tag on php_flag magic_quotes_gpc off RewriteEngine on #RewriteCond RewriteBase "//usvn/" RewriteRule ^svn/ - [L,NC] # This is the line I added to exclude this path RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]