關於apache服務器加載so的報錯


早上突然發現我的虛擬機上的WEB應用訪問不了了,后台檢查httpd服務,無法啟動,出現一行提示:

①starting httpd: httpd: Syntax error on line 163 of /etc/httpd/conf/httpd.conf:

②Cannot load /etc/httpd/modules/mod_ldap.so into server:

③/etc/httpd/modules/mod_ldap.so: undefined symbol: apr_ldap_ssl_init

不得不說,apache的錯誤拋出機制寫的真心不錯,原因很清晰:

①啟動httpd,httpd.conf的163行出錯了:

②未能加載mod_ldap.so到apache服務器:

③未知的符號:apr_ldap_ssl_init

這個錯誤提示原因多是頭文件缺失或者頭文件和執行程序不匹配導致。

以前運行好好的,怎么突然就出錯了呢?

apr_?想起來上周剛安裝了最新版本的apache apr,應該是版本沖突。

執行httpd -V,看到如下信息:

========================================

[root@localhost src]# httpd -V
Server version: Apache/2.2.15 (Unix)
Server built: Oct 16 2014 14:45:47
Server's Module Magic Number: 20051115:25
Server loaded: APR 1.5.1, APR-Util 1.5.4
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"

=======================================

得到確認了,編譯使用的是APR 1.3.9,運行時加載了APR 1.5.1(這個是我上周裝的最新版),版本沖突了。

解決思路:

①重新編譯apache服務器,使用高版本的APR庫。

②降低我項目所使用的APR版本,保持和apache一致。

由於產品默認的apache服務器是較低版本,我選擇了第二種思路。

新的問題出現了:提示找不到apr_dbd_mysql.so庫。

這個看了一下編譯后的APR包路徑,就比較容易解決了,將apr_dbd_mysql.so文件拷貝到

/usr/lib/apr-util-1(這是低版本的APR默認加載的庫路徑)下就行了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM