生活随笔
收集整理的這篇文章主要介紹了
VisualSVN Server 自助修改密码页面
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、安裝VisualSVN服務(wù):
???????下載VisualSVN Server(https://www.visualsvn.com/server/download/),并安裝VisualSVN Server,由于安裝過(guò)程比較簡(jiǎn)單,本文就在不再介紹。具體的安裝過(guò)程官網(wǎng)也是有介紹的(詳情參考:https://www.visualsvn.com/server/getting-started/)。
二、VisualSVN服務(wù)修改密碼配置:
???????如果不用VisualSVN客戶(hù)端的話(huà),VisualSVN Server只能在服務(wù)器端修改密碼,對(duì)管理來(lái)說(shuō)很不方便。 VisualSVN Server 帳號(hào)及密碼保存在 htpasswd 文件里,有以下幾種修改密碼的方式:
? ? 1、使用 VisualSVN Server Manager 管理工具重置密碼(如下圖所示)。
? ? 2、通過(guò) WMI 里用 PowerShell腳本更改。示例如下:
$svnuser = Get-WmiObject -Namespace Root\VisualSVN `
-ComputerName svn.hostname.com `
-query "select * from VisualSVN_User where name = 'username'"
$svnuser.SetPassword('123456')
3、使用 Apache 的 htpasswd.exe 命令更改:
???????該方法是使用 php 頁(yè)面來(lái)調(diào)用 htpasswd.exe 修改密碼,方便用戶(hù)通過(guò)網(wǎng)頁(yè)修改,下面講解配置要點(diǎn)。
???????我使用的操作系統(tǒng)是 Windows Server 2008R2 x64,安裝了 VisualSVN Server 3.5.6 x64 帶 Apache 2.2.31 x64 的版本,默認(rèn)安裝路徑。
???????從 Apache 官方網(wǎng)站下載完整的 Apache 2.2.31 x64 版本,從里面提取一個(gè)文件 htpasswd.exe 放到:C:\Program Files\VisualSVN Server\bin\htpasswd.exe
???????Apache 2.2.x 要以 handler 方式加載 php 模塊,只有 php 5.2-5.4 的 Thread Safe 版本才帶 php5apache2_2.dll 文件,php 5.5 及之后的版本只能和 Apache 2.4.x 搭配了,所以選定 php 5.4 版本。
? ?**特別注意:**如果用 VisualSVN Server x64 就必須找 x64 的 php!
???????否則 Apache 加載 php 模塊會(huì)提示錯(cuò)誤 Cannot load php5apache2_2.dll into server因?yàn)?Apache x64 無(wú)法使用 php x86。
使用 32 位版本的 VisualSVN Server 比較簡(jiǎn)單,因?yàn)?php 官網(wǎng)都是 x86 版本:
http://windows.php.net/downloads/releases/archives/
使用 64 位版本的 VisualSVN Server 就得找第三方編譯的 php x64 版本了,提供兩個(gè)下載:
https://www.anindya.com/php-5-4-12-and-5-3-22-x64-64-bit-for-windows/
http://www.apachelounge.com/viewtopic.php?t=6123
???????我下載的是 php-5.4.36-Win32-VC9-x64.zip,下載后解壓到 C:\Program Files\VisualSVN Server\php 文件夾。把 php.ini-production 文件重命名為 php.ini 即可,其他不用配置。
???????3.1、修改空文件 C:\Program Files\VisualSVN Server\conf\httpd-custom.conf
內(nèi)容如下:
LoadModule php5_module "php/php5apache2_2.dll"
<IfModule php5_module>AddType application/x-httpd-php .phpDirectoryIndex index.html index.php
</IfModule>
# 配置 php.ini 的路徑
PHPIniDir "php"
**注意:**在VisualSVNServer3.9版本中,遇到VisualSVNServer無(wú)法正常啟動(dòng)問(wèn)題,可將以上:
LoadModule php5_module "php/php5apache2_2.dll"
修改php5的版本,或者修改php5apache2_4.dll文件的絕對(duì)路徑:
LoadModule php5_module "php/php5apache2_4.dll"
???????3.2、新建一個(gè) php 文件放到 C:\Program Files\VisualSVN Server\htdocs\index.php
內(nèi)容如下:
<?php
/***************************************************************/
$passwdfile="C:\Repositories\htpasswd";
$htpasswdPath = "C:\Program Files\VisualSVN Server\bin\htpasswd.exe";
/***************************************************************/$username = $_SERVER["PHP_AUTH_USER"]; //經(jīng)過(guò) AuthType Basic 認(rèn)證的用戶(hù)名
$authed_pass = $_SERVER["PHP_AUTH_PW"]; //經(jīng)過(guò) AuthType Basic 認(rèn)證的密碼
$input_oldpass = (isset($_REQUEST["oldpass"]) ? $_REQUEST["oldpass"] : ""); //從界面上輸入的原密碼
$newpass = (isset($_REQUEST["newpass"]) ? $_REQUEST["newpass"] : ""); //界面上輸入的新密碼
$repeatpass = (isset($_REQUEST["repeatpass"]) ? $_REQUEST["repeatpass"] : ""); //界面上輸入的重復(fù)密碼
$action = (isset($_REQUEST["action"]) ? $_REQUEST["action"] : ""); //以hide方式提交到服務(wù)器的actionif ($action!="modify") {$action = "view";
} else if ($authed_pass!=$input_oldpass) {$action = "oldpasswrong";
} else if (empty($newpass)) {$action = "passempty";
} else if ($newpass!=$repeatpass) {$action = "passnotsame";
} else{$action = "modify";
}
?><html>
<head><meta http-equiv="Content-Type" content="text/html; charset=GBK"><title>密碼修改</title>
</head>
<body><?php
//action=view 顯示普通的輸入信息
if ($action == "view") {
?>
<script language = "javaScript">
<!--
function loginIn(myform) {var newpass=myform.newpass.value;var repeatpass=myform.repeatpass.value;if (newpass=="") {alert("請(qǐng)輸入密碼!");return false;}if (repeatpass=="") {alert("請(qǐng)重復(fù)輸入密碼!");return false;}if (newpass!=repeatpass) {alert("兩次輸入密碼不一致,請(qǐng)重新輸入!");return false;}
return true;
}
//-->
</script><style type="text/css">
<!--table {border: 1px solid #CCCCCC;background-color: #f9f9f9;text-align: center;vertical-align: middle;font-size: 9pt;line-height: 15px;}th {font-weight: bold;line-height: 20px;border-top-width: 1px;border-right-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-bottom-style: solid;color: #333333;background-color: f6f6f6;}input{height: 18px;}.button {height: 20px;}
-->
</style><br><br><br>
<form method="post">
<input type="hidden" name="action" value="modify"/>
<table width="220" cellpadding="3" cellspacing="8" align="center">
<tr>
<th colspan=2>密碼修改</th>
</tr>
<tr>
<td>用 戶(hù) 名:</td>
<td align="left"> <?php echo $username?></td>
</tr>
<tr>
<td>原 密 碼:</td>
<td><input type=password size=12 name=oldpass></td>
</tr>
<tr>
<td>用戶(hù)密碼:</td>
<td><input type=password size=12 name=newpass></td>
</tr>
<tr>
<td>確認(rèn)密碼:</td>
<td><input type=password size=12 name=repeatpass></td>
</tr>
<tr>
<td colspan=2>
<input onclick="return loginIn(this.form)" class="button" type=submit value="修 改">
<input name="reset" type=reset class="button" value="取 消">
<a href="/"><input name="return" type=button class="button" value="返 回"></a>
</td>
</tr>
</table>
</form>
<?php
} else if ($action == "oldpasswrong") {$msg="原密碼錯(cuò)誤!";
} else if ($action == "passempty") {$msg="請(qǐng)輸入新密碼!";
} else if ($action == "passnotsame") {$msg="兩次輸入密碼不一致,請(qǐng)重新輸入!";
} else {
// $passwdfile="D:\SVN_Repositories\htpasswd";
// $command='"d:\VisualSVN Server\bin\htpasswd.exe" -b '.$passwdfile." ".$username." ".$newpass;$command='"'. $htpasswdPath. '" -b '.$passwdfile." ".$username." ".$newpass;system($command, $result);if ($result==0) {$msg_succ="用戶(hù)[".$username."]密碼修改成功,請(qǐng)用新密碼登陸.";} else {$msg="用戶(hù)[".$username."]密碼修改失敗,返回值為".$result.",請(qǐng)和管理員聯(lián)系!";}
}if (isset($msg_succ)) {
?>
<script language="javaScript">
<!--
alert("<?php echo $msg_succ?>");
window.location.href="/"
//-->
</script>
<?php
} else if (isset($msg)) {
?>
<script language="javaScript">
<!--
alert("<?php echo $msg?>");
window.location.href="<?php echo $_SERVER["PHP_SELF"]?>"
//-->
</script>
<?php
}
?>
</body>
</html>
???????3.3、添加向修改密碼頁(yè)面跳轉(zhuǎn)的超鏈接,修改文件 C:\Program Files\VisualSVN Server\WebUI\index.html
內(nèi)容如下:
<a href="/index.php">修改密碼</a>
設(shè)置完成后,重新啟動(dòng)下Visual SVN server,然后瀏覽器進(jìn)入即可看到效果(效果如下圖所示)。
四、常見(jiàn)問(wèn)題:
1、Cannot load php5apache2_4.dll into server解決辦法???????原因1:
???????我們?cè)诎惭b好Apache服務(wù)器,一開(kāi)始正常,但安裝PHP配置完成之后,再次啟動(dòng)apache的時(shí)候出現(xiàn)了錯(cuò)誤 the requested operation has failed;
???????其實(shí)網(wǎng)上很多教程說(shuō)了一大堆,但是都沒(méi)有說(shuō)到點(diǎn)子上,出現(xiàn)這個(gè)問(wèn)題最大的可能性就是,您沒(méi)有安裝VC11運(yùn)行庫(kù),因?yàn)楝F(xiàn)在所有的5.5環(huán)境都是基于 vc11的編譯腳本下生成的,所以在windows下你得安裝相關(guān)組件msvcr110.dll,否則你雙擊php.exe測(cè)試的時(shí)候會(huì)報(bào)錯(cuò)。在安裝msvcr110.dll的時(shí)候也要注意系統(tǒng)位數(shù),要不然也是不行的。
???????原因2:
???????1.php 5.5 開(kāi)始就不支持windows2003了;
???????1.開(kāi)始想了好久,1直沒(méi)發(fā)現(xiàn)錯(cuò)誤,后面猛然發(fā)現(xiàn)我的apache的版本是2.2,PHP的版本是5.5,PHP5.5不支持apache2.2了,所以只有php5apache2_4.dll,于是又去下載了個(gè)PHP5.4,里邊包含了php5apache2_2.dll,在httpd.conf中添加:LoadModule php5_module “D:/php-5.4.23-Win32-VC9-x86/php5apache2_2.dll”,問(wèn)題解決;
如果Apache/PHP還無(wú)法啟動(dòng),那最可能是php5_module模塊的問(wèn)題:
???????1.Apache2.0對(duì)應(yīng)的PHP模塊為php5apache2.dll;
???????2.Apache2.2對(duì)應(yīng)的PHP模塊為php5apache2_2.dll;
???????3.Apache2.4對(duì)應(yīng)的PHP模塊為php5apache2_4.dll;
???????換句話(huà)說(shuō),根據(jù)php5_module模塊,可以知道當(dāng)前版本php支持哪種Apache
所以,Apache/PHP的搭配有以下幾種情況:
???????1.php5.2支持Apache2.0和Apache2.2;
???????2.php5.3、php5.4同時(shí)支持Apache2.2和Apache2.4;
???????3.php5.5只支持Apache2.4;
???????除非你自己手動(dòng)編譯php5_module模塊,否則只能有以上3種選擇;
???????如果Apache/PHP還是無(wú)法啟動(dòng),檢查php配置(php.ini)是否存在,運(yùn)行php.exe有沒(méi)有提示錯(cuò)誤。根據(jù)錯(cuò)誤提示,糾正錯(cuò)誤;
總結(jié)
以上是生活随笔為你收集整理的VisualSVN Server 自助修改密码页面的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。