VisualSVN Server 自助修改密碼頁面

一、安裝VisualSVN服務:

下載VisualSVN Server(https://www.visualsvn.com/server/download/),並安裝VisualSVN Server,由於安裝過程比較簡單,本文就在不再介紹。具體的安裝過程官網也是有介紹的(詳情參考:https://www.visualsvn.com/server/getting-started/)。

二、VisualSVN服務修改密碼配置:

如果不用VisualSVN客戶端的話,VisualSVN Server只能在服務器端修改密碼,對管理來說很不方便。 VisualSVN Server 帳號及密碼保存在 htpasswd 文件裡,有以下幾種修改密碼的方式:

    1、使用 VisualSVN Server Manager 管理工具重置密碼(如下圖所示)。


VisualSVN Server 自助修改密碼頁面

2、通過 WMI 裡用 PowerShell腳本更改。示例如下:

<code>$svnuser = Get-WmiObject -Namespace Root\\VisualSVN `
-ComputerName svn.hostname.com `
-query "select * from VisualSVN_User where name = 'username'"
$svnuser.SetPassword('123456')/<code>

3、使用 Apache 的 htpasswd.exe 命令更改:

該方法是使用 php 頁面來調用 htpasswd.exe 修改密碼,方便用戶通過網頁修改,下面講解配置要點。我使用的操作系統是 Windows Server 2008R2 x64,安裝了 VisualSVN Server 3.5.6 x64 帶 Apache 2.2.31 x64 的版本,默認安裝路徑。從 Apache 官方網站下載完整的 Apache 2.2.31 x64 版本,從裡面提取一個文件 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 模塊會提示錯誤 Cannot load php5apache2_2.dll into server因為 Apache x64 無法使用 php x86。使用 32 位版本的 VisualSVN Server 比較簡單,因為 php 官網都是 x86 版本:http://windows.php.net/downloads/releases/archives/使用 64 位版本的 VisualSVN Server 就得找第三方編譯的 php x64 版本了,提供兩個下載: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

內容如下:

<code>LoadModule php5_module "php/php5apache2_2.dll"
<ifmodule>
AddType application/x-httpd-php .php

DirectoryIndex index.html index.php
/<ifmodule>
# 配置 php.ini 的路徑
PHPIniDir "php"/<code>

**注意:**在VisualSVNServer3.9版本中,遇到VisualSVNServer無法正常啟動問題,可將以上:LoadModule php5_module "php/php5apache2_2.dll"修改php5的版本,或者修改php5apache2_4.dll文件的絕對路徑:LoadModule php5_module "php/php5apache2_4.dll"。

3.2、新建一個 php 文件放到 C:\\Program Files\\VisualSVN Server\\htdocs\\index.php
內容如下:

<code>/***************************************************************/
$passwdfile="C:\\Repositories\\htpasswd";
$htpasswdPath = "C:\\Program Files\\VisualSVN Server\\bin\\htpasswd.exe";
/***************************************************************/

$username = $_SERVER["PHP_AUTH_USER"]; //經過 AuthType Basic 認證的用戶名
$authed_pass = $_SERVER["PHP_AUTH_PW"]; //經過 AuthType Basic 認證的密碼
$input_oldpass = (isset($_REQUEST["oldpass"]) ? $_REQUEST["oldpass"] : ""); //從界面上輸入的原密碼
$newpass = (isset($_REQUEST["newpass"]) ? $_REQUEST["newpass"] : ""); //界面上輸入的新密碼
$repeatpass = (isset($_REQUEST["repeatpass"]) ? $_REQUEST["repeatpass"] : ""); //界面上輸入的重複密碼
$action = (isset($_REQUEST["action"]) ? $_REQUEST["action"] : ""); //以hide方式提交到服務器的action

if ($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";
}
?>




<title>密碼修改/<title>



//action=view 顯示普通的輸入信息
if ($action == "view") {
?>

<style><br><!--<br> table {<br> border: 1px solid #CCCCCC;<br> background-color: #f9f9f9;<br> text-align: center;<br> vertical-align: middle;<br> font-size: 9pt;<br> line-height: 15px;<br> }<br> th {<br> font-weight: bold;<br> line-height: 20px;<br> border-top-width: 1px;<br> border-right-width: 1px;<br> border-bottom-width: 1px;<br> border-left-width: 1px;<br> border-bottom-style: solid;<br> color: #333333;<br> background-color: f6f6f6;<br> }<br> input{<br> height: 18px;<br> }<br> .button {<br> height: 20px;<br> }<br>--><br>/<style>






} else if ($action == "oldpasswrong") {
$msg="原密碼錯誤!";
} else if ($action == "passempty") {
$msg="請輸入新密碼!";
} else if ($action == "passnotsame") {
$msg="兩次輸入密碼不一致,請重新輸入!";
} 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="用戶[".$username."]密碼修改成功,請用新密碼登陸.";
} else {
$msg="用戶[".$username."]密碼修改失敗,返回值為".$result.",請和管理員聯繫!";
}
}

if (isset($msg_succ)) {
?>
} else if (isset($msg)) {

?>
}
?>

/<code>

3.3、添加向修改密碼頁面跳轉的超鏈接,修改文件 C:\\Program Files\\VisualSVN Server\\WebUI\\index.html內容如下:

<code>

設置完成後,重新啟動下Visual SVN server,然後瀏覽器進入即可看到效果(效果如下圖所示)。


VisualSVN Server 自助修改密碼頁面


VisualSVN Server 自助修改密碼頁面

四、常見問題:

1、Cannot load php5apache2_4.dll into server解決辦法


VisualSVN Server 自助修改密碼頁面


原因1:

我們在安裝好Apache服務器,一開始正常,但安裝PHP配置完成之後,再次啟動apache的時候出現了錯誤 the requested operation has failed;

其實網上很多教程說了一大堆,但是都沒有說到點子上,出現這個問題最大的可能性就是,您沒有安裝VC11運行庫,因為現在所有的5.5環境都是基於 vc11的編譯腳本下生成的,所以在windows下你得安裝相關組件msvcr110.dll,否則你雙擊php.exe測試的時候會報錯。在安裝msvcr110.dll的時候也要注意系統位數,要不然也是不行的。

原因2:

1.php 5.5 開始就不支持windows2003了;

1.開始想了好久,1直沒發現錯誤,後面猛然發現我的apache的版本是2.2,PHP的版本是5.5,PHP5.5不支持apache2.2了,所以只有php5apache2_4.dll,於是又去下載了個PHP5.4,裡邊包含了php5apache2_2.dll,在httpd.conf中添加:LoadModule php5_module “D:/php-5.4.23-Win32-VC9-x86/php5apache2_2.dll”,問題解決;

如果Apache/PHP還無法啟動,那最可能是php5_module模塊的問題:

1.Apache2.0對應的PHP模塊為php5apache2.dll;

2.Apache2.2對應的PHP模塊為php5apache2_2.dll;

3.Apache2.4對應的PHP模塊為php5apache2_4.dll;

換句話說,根據php5_module模塊,可以知道當前版本php支持哪種Apache

所以,Apache/PHP的搭配有以下幾種情況:

1.php5.2支持Apache2.0和Apache2.2;

2.php5.3、php5.4同時支持Apache2.2和Apache2.4;

3.php5.5只支持Apache2.4;

除非你自己手動編譯php5_module模塊,否則只能有以上3種選擇;

如果Apache/PHP還是無法啟動,檢查php配置(php.ini)是否存在,運行php.exe有沒有提示錯誤。根據錯誤提示,糾正錯誤;


分享到:


相關文章: