錯誤現象:自行 ./configure && make && make install Apache 後啟動報錯:
httpd: Syntax error on line 53 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server:
/usr/local/apache2/modules/mod_dav_svn.so: undefined symbol: dav_register_provider
mod_dav_svn 依賴 mod_dav 提供的 dav_register_provider 符號。重新編譯時若未啟用 --enable-dav,mod_dav 不會編譯進核心或生成共享模組,導致符號缺失。
./configure \
--prefix=/usr/local/apache2 \
--enable-dav \
--enable-so \
--enable-maintainer-mode \
--enable-rewrite \
--enable-dav-fs \
--enable-dav-lock \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util
| 模組 | 編譯參數 | 功能 |
|---|---|---|
| mod_dav | --enable-dav | WebDAV 核心協議支援 |
| mod_dav_fs | --enable-dav-fs | 檔案系統儲存提供者 |
| mod_dav_lock | --enable-dav-lock | 通用鎖定管理 |
| mod_dav_svn | Subversion 原始碼中編譯 | Subversion WebDAV 提供者 |
# 檢查模組是否編入
httpd -l | grep dav
httpd -M | grep dav
# 檢查符號表
nm /usr/local/apache2/modules/mod_dav.so | grep dav_register_provider
cd subversion-1.x.x
./configure --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
make
make install
# 會生成 mod_dav_svn.so, mod_authz_svn.so 到 Apache modules 目錄