在苦苦搜寻和反复实践之后,终于成功了,虽然该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 提示修改成功