在苦苦搜寻和反复实践之后,终于成功了,虽然该php程序的原作者已经无从知晓,但仍然要表示感谢,同时鄙视那些不经过实践就把文章转来转去的人。
因为那样做除了增加点可怜的PV,根本帮助不了任何人,只会浪费他人的时间。
源码安装SVN的过程请参考我的这篇文章:http://heylinux.com/archives/917.html
1.修改Apache配置文件
因为我在安装和配置SVN的时候,对Apache的配置文件进行过优化,将所有关于SVN的配置都写在了/opt/apache2/conf/extra/httpd-svn.conf中,然后再通过主配置文件/opt/apache2/conf/httpd.conf中Include conf/extra/httpd-svn.conf方式来调用。
因此,我这里需要修改的就是/opt/apache2/conf/extra/httpd-svn.conf文件,加入以下内容(其中第1,2,6行请根据实际情况进行修改):
1 | Alias /svntools "/opt/apache2/htdocs/svntools" |
2 | <Directory "/opt/apache2/htdocs/svntools"> |
5 | AuthName "GridTeam`s subversion tools" |
6 | AuthUserFile "/opt/subversion/conf/svn_passwdfile" |
2.创建修改自身密码的php页面
mkdir /opt/apache2/htdocs/svntools
cd /opt/apache2/htdocs/svntools
vim svnpass.php
输入以下内容(其中第135,136行请根据实际情况进行修改):
002 | $username = $_SERVER["PHP_AUTH_USER"]; |
003 | $authed_pass = $_SERVER["PHP_AUTH_PW"]; |
004 | $input_oldpass = (isset($_REQUEST["oldpass"]) ? $_REQUEST["oldpass"] : ""); |
005 | $newpass = (isset($_REQUEST["newpass"]) ? $_REQUEST["newpass"] : ""); |
006 | $repeatpass = (isset($_REQUEST["repeatpass"]) ? $_REQUEST["repeatpass"] : ""); |
007 | $action = (isset($_REQUEST["action"]) ? $_REQUEST["action"] : ""); |
009 | if($action!="modify"){ |
012 | else if($authed_pass!=$input_oldpass){ |
013 | $action = "oldpasswrong"; |
015 | else if(empty($newpass)){ |
016 | $action = "passempty"; |
018 | else if($newpass!=$repeatpass){ |
019 | $action = "passnotsame"; |
028 | <meta http-equiv="Content-Type" content="text/html; charset=GBK"> |
029 | <title>Subversion 在线自助密码修改</title> |
035 | if ($action == "view"){ |
037 | <script language = "javaScript"> |
039 | function loginIn(myform) |
041 | var newpass=myform.newpass.value; |
042 | var repeatpass=myform.repeatpass.value; |
054 | if(newpass!=repeatpass){ |
055 | alert("两次输入密码不一致,请重新输入!"); |
062 | <style type="text/css"> |
065 | border: 1px solid #CCCCCC; |
066 | background-color: #f9f9f9; |
068 | vertical-align: middle; |
075 | border-top-width: 1px; |
076 | border-right-width: 1px; |
077 | border-bottom-width: 1px; |
078 | border-left-width: 1px; |
079 | border-bottom-style: solid; |
081 | background-color: f6f6f6; |
094 | <input type="hidden" name="action" value="modify"/> |
095 | <table width="220" cellpadding="3" cellspacing="8" align="center"> |
097 | <th colspan=2>Subversion 密码修改</th> |
101 | <td align="left"> <?=$username?></td> |
105 | <td><input type=password size=12 name=oldpass></td> |
109 | <td><input type=password size=12 name=newpass></td> |
113 | <td><input type=password size=12 name=repeatpass></td> |
117 | <input onclick="return loginIn(this.form)" class="button" type=submit value="修 改"> |
118 | <input name="reset" type=reset class="button" value="取 消"> |
125 | else if($action == "oldpasswrong"){ |
128 | else if($action == "passempty"){ |
131 | else if($action == "passnotsame"){ |
132 | $msg="两次输入密码不一致,请重新输入!"; |
135 | $passwdfile="/opt/subversion/conf/svn_passwdfile"; |
136 | $command='"/opt/apache2/bin/htpasswd" -b '.$passwdfile." ".$username." ".$newpass; |
137 | system($command, $result); |
139 | $msg="用户[".$username."]密码修改成功,请用新密码登陆."; |
142 | $msg="用户[".$username."]密码修改失败,返回值为".$result.",请和管理员联系!"; |
148 | <script language="javaScript"> |
151 | window.location.href="<?=$_SERVER["PHP_SELF"]?>" |
修改权限
chown -R apache:apache /opt/apache2/htdocs/svntools
3.登陆页面
3.1 打开页面http://192.168.116.128/svntools/svnpass.php(具体IP请根据实际情况填写)
输入用户名和密码,登陆。
3.2 修改密码

点击“修改”
3.3 提示修改成功
