启动apache的时候提示 mod_dev_svn.so出错

1. 使用Dependency Walker,将mod_dav_svn.so所关联的所有动态库全部找出来,收集到一个目录下,包括
mod_dav.so  libhttpd.dll  libapr.dll  libaprutil.dll  libapriconv.dll  (从 apache\bin 目录拷贝)
libdb43.dll  intl3_svn.dll  ssleay32.dll  libeay32.dll (从 svn-win32-1.3.2\bin 目录拷贝)
共9个动态库,放在 modules\svn 目录下,然后修改 apache2\conf\httpd.conf文件   LoadModule dav_svn_module  modules/svn/mod_dav_svn.so ,终于成功启动apache 的 services

2. 给 httpd.conf 添加如下指令,重启 apache 失败
<Location /svn>
    DAV svn
    SVNParentPath d:\svn_repository
    AuthType Basic
    AuthName "my Subversion Server"
    AuthUserFile d:\svn_repository\passwd.conf
    AuthzSVNAccessFile d:\svn_repository\authz.conf
    Require valid-user
</Location>

3. 将 LoadModule authz_svn_module   modules/svn/mod_authz_svn.so 加入配置,并将mod_authz_svn.so 拷贝入 modules\svn 目录, 再次启动 services 成功

4. 将
LoadModule dav_svn_module     modules/svn/mod_dav_svn.so
LoadModule authz_svn_module   modules/svn/mod_authz_svn.so
改成
LoadModule dav_svn_module "D:\Program Files\svn-win32-1.3.2\bin\mod_dav_svn.so"
LoadModule authz_svn_module "D:\Program Files\svn-win32-1.3.2\bin\mod_authz_svn.so"
重启 apache services 成功。至此,一切顺利,而昨晚出现的问题并没有重现。不死心,继续试验。

5. 设置
LoadModule dav_svn_module     modules/svn/mod_dav_svn.so
LoadModule authz_svn_module   modules/svn/mod_authz_svn.so
但是,将libapr.dll  libaprutil.dll  libapriconv.dll 三个动态库从 svn-win32-1.3.2\bin 目录拷贝过来覆盖,结果还是成功启动apache

认真查看昨晚留下的痕迹,发现原目录没有 intl3_svn.dll 文件。于是准备继续试验

6. 删除 modules\svn 目录下的 intl3_svn.dll,打开dos窗口用 path=%path%;"D:\Program Files\svn-win32-1.3.2\bin" 命令将 D:\Program Files\svn-win32-1.3.2\bin 目录加入本dos窗体的临时 path 内,然后打开dos窗口执行 apache,失败

7. 打开“我的电脑”属性,选“高级”下面的“环境变量”,将系统变量中path内,加入上述内容。然后打开dos窗口执行 apache,哈,成功了。接着启动 apache services ,果然,失败!!


【总结】
1. 在以应用程序模式启动apache的时候,其搜索动态库的路径,与以services方式启动时候的搜索路径不一样。以应用程序模式启动时,其搜索路径为
动态库本地目录-->apache\bin目录-->系统path
而以windows services模式启动时,其搜索路径只有前两项,没有第三项。

所以当你将 subversion\bin 目录设置入系统的环境变量,而没有将相关几个动态库放在apache关联目录下的时候,就会出现apache services启动失败而apache applichation启动成功的情况。

【注:本结论仅适用于将 svn-win32-1.3.2.zip 预编译包解压后就直接使用的情况。对于使用 svn-1.3.2-setup.exe 安装包正规安装的用户,本结论也许不适合。】

2. 当apache抱怨说无法启动,或者无法加载某个动态库的时候,一般先检查该动态库的关联情况。

【结束语】
借用 Subversion FAQ 上面的一段话做结束语:

The error message in this case is a little misleading. Most likely Apache is unable to load one or more DLLs that mod_dav_svn.so relies on. If Apache is running as a service it will not have the same PATH as a regular user. Make sure that libdb4*.dll, libeay32.dll and ssleay32.dll are present in either \Apache\bin or \Apache\modules. You can copy them from your Subversion installation directory if they are not there.

If this still does not resolve the problem, you should use a tool like Dependency Walker on mod_dav_svn.so to see if there are any other unresolved dependencies.

转载于:https://www.cnblogs.com/APTX4869/archive/2011/01/26/1948409.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TortoiseSVN-1.6.15版 svn apache 服务器 配置步骤: 1, httpd-2.2.16-win32-x86-openssl-0.9.8o.msi   除了端口设置以外,其他的请按照常识设置,其中端口我改为了 9999 。   随个人喜好吧,但尽量设置 5000 以上的端口号,最好不要用默认80 端口,因为这个端口很容易被其他的软件占用,造成冲突,使 Apache 无法启动服务。   我已经尝试过,这里友情提示。^_^   安装成功之后,尝试启动服务,在任务栏那里应该有一个 Apache Monitor,双击打开,点击 Start 按钮,如果亮了绿灯,表示成功安装。 2, Subversion-v1.5.2-Setup-en-us.msi   一路Next下去,默认设置安装即可。没任何报错,就安装成功了。 3, TortoiseSVN-1.6.3.16613-win32-svn-1.6.3.msi   一路next下去,默认设置安装即可,正确安装完会要求重启。OK,重启。 4, 检查 Apache 安装目录下的 \modules 下是不是已经有了 mod_dav_svn.so 和 mod_authz_svn.so。 5, 检查 Apache 安装目录下的 \modules 下是不是已经有了 libdb44.dll(或者是 libdb52.dll )。 6, 检查 Apache 安装目录下的 \bin 下是不是有 libeay32.dll 和 ssleay32.dll。   注意:步骤4,5,6中,如果在 Apache 相应的目录下没有找到这些文件,可以从 Subversion 安装目录中的 \bin 下拷过来,直接放到 Apache 相应的文件夹中即可。 7, 配置 Apache 安装目录下的 \conf\httpd.conf   <1>查找:   #LoadModule dav_module modules/mod_dav.so   #LoadModule dav_fs_module modules/mod_dav_fs.so   将#号去掉,改为:(注意:每行开始不要有空格)   LoadModule dav_module modules/mod_dav.so   LoadModule dav_fs_module modules/mod_dav_fs.so   如果找不到上边两句,可直接把上边没#号的两行添加到文件中那一堆LoadModule后边。   <2>在文件中的一堆LoadModule后边添加如下两句:(注意,每行开始最好不要有空格)   LoadModule dav_svn_module modules/mod_dav_svn.so   LoadModule authz_svn_module modules/mod_authz_svn.so   <3>这一步是配置你的 SVN 版本库(Repository)目录以及从浏览器访问其的 URL 或 URI 。   在 httpd.conf 的结尾,添加如下字段: <Location /svn>   DAV svn SVNListParentPath on SVNParentPath C:\SVN AuthType Basic AuthName "Subversion repositories" AuthUserFile C:\SVN\conf\passwd </Location>   注意:这里 /svn 是指客户端访问时 URI 的一部分,比如: svn://localhost:9999/svn/ 或者 svn://127.0.0.1:9999/svn/ 。   另外有的客户端不要 URI,要 URL,那就 http://localhost:9999/svn/ 可以了。   如果是本机或者是内部局域网,直接点击 "浏览按钮" -_-   下边的 C:\SVN (按照个人喜好自己建立,建议文件夹名称:英文无空格)就是版本库(Repository)的路径。   最后一行是设置密码用的,后面再说。 8, 配置资源库   建立文件夹,就是上边配置的那个C:/SVN,打开文件夹后右击会出现 TortoiseSVN , 点它,选择 “在此创建版本库”,如果有其它选项,默认就行。   成功的话,文件夹里多了以下两个文件和四个文件夹:      文件夹:conf, db, hooks, locks      文件:format, README.txt 9, 重启 Apache,如果重启失败,请确认 4. 5 .6. 7 你是否正确。 10, 通常这个时候 SVN 服务器已经搭建成功了,访问 http://localhost:9999/SVN/ 是不是有内容了?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值