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有没有提示错误。根据错误提示,纠正错误;


分享到:


相關文章: