apache2: Syntax error on line 203 of /etc/apache2/apache2.conf:
Syntax error on line 2 of /etc/apache2/mods-enabled/authz_svn.load:
Cannot load /usr/lib/apache2/modules/mod_authz_svn.so into server:
/usr/lib/apache2/modules/mod_authz_svn.so: undefined symbol: dav_svn_get_repos_path
Action 'configtest' failed.
在尝试重新启动服务器时,我在 Ubunutu (12.10 Quantal) 上更新 SVN 后收到此错误。所有模块 dav、dav_svn 和 authz_svn 都已到位并正在运行。不幸的是,在我选择的搜索引擎中搜索错误并没有得到任何结果。当通过浏览器访问 svn 时,它仍然显示版本为 1.7.5.x,当执行“svn help”时,它显示 1.8.3.x
再次降级到 1.7.5 后,我得到了以下信息:
Syntax error on line 203 of /etc/apache2/apache2.conf:
Syntax error on line 2 of /etc/apache2/mods-enabled/authz_svn.load: Cannot load
/usr/lib/apache2/modules/mod_authz_svn.so into server: libsvn_repos-1.so.0:
cannot open shared object file: No such file or directory
答案1
在 Ubuntu 12.04 中安装自定义 Subversion 1.7 Apache 模块后,我遇到了类似的错误。必须按以下顺序加载模块:dav -> dav_svn_module -> authz_svn_module,以便正确加载库。libapache2-svn Ubuntu 包似乎使用 .load 文件顶部的“Depends:”注释来处理此问题:
/etc/apache2/mods-available/dav_svn.load:
# Depends: dav
LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
/etc/apache2/mods-available/authz_svn.load
# Depends: dav_svn
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so
根据我的经验,我的自定义模块是根据这些依赖项启用/禁用的,但 Apache 仍尝试按字母顺序加载 /etc/apache2/mods-enabled/*,因此首先加载 authz_svn.load 并出现上述错误。我不知道 libapache2-svn 包如何避免这个问题,而自定义模块却不能。
我通过完全删除 mods-available/mods-enabled dav_svn.load 和 authz_svn.load 文件解决了该问题。然后我将其放入 /etc/apache2/httpd.conf:
LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so
顺序显然很重要。Apache 在 mods-enabled 之后加载 httpd.conf,因此现在 Apache 为我启动。