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. |
启动apache的时候提示 mod_dev_svn.so出错
最新推荐文章于 2022-06-25 15:53:03 发布