解决难缠的“undefined symbol: apr_ldap_ssl_init”等问题

###在64bit机器上,使用yum remove把非64的i386/i686全部的安装包全部清除之后重启httpd出现错误:

Starting httpd: httpd: Syntax error on line 161 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

###在httpd.conf文件中把mod_ldap.so注释之后则出现以下错误:
Starting httpd: httpd: Syntax error on line 162 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_authnz_ldap.so into server: /etc/httpd/modules/mod_authnz_ldap.so: undefined symbol: apr_ldap_url_parse

###在httpd.conf文件中把mod_authnz_ldap.so注释之后虽然不错了,但是发生这样的错误感到莫名奇妙,很不舒服!

 

###于是接下来开始折腾了。。。。折腾了几个小时。。。。。使用“yum install httpd”重装apache以及所有相关包。。。。下载apache2.2.14最新稳定版源码重新编译。。。。。重新下载apr及apr-util源码编译安装。。。。删除再安装。。。安装再删除。。。网上几乎查遍了所有中英文网站资料。。。依然不行。。。。。真是折腾!!!(从后来知道的原因来看实在无语。。。。。。因此要广而告之!!!)

 

###以下是配置过程中出现的其它错误,列在这里以供搜索到此并供参考:
httpd: Syntax error on line 161 of /usr/local/apache2/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_ldap.so into server: /etc/httpd/modules/mod_ldap.so: undefined symbol: ldap_simple_bind_s

 

###在解决问题过程中开始怀疑ldap相关包有问题,而来在网上资料中发现应该是apr-util包有问题。

 

###那到底是什么原因?怎么解决呢? 执行./httpd -V 看看版本吧!

Server version: Apache/2.2.3
Server built:   Jul 15 2009 09:02:25
Server's Module Magic Number: 20051115:3
Server loaded:  APR 1.3.9, APR-Util 1.3.9             ###错误的!
Compiled using: APR 1.2.7, APR-Util 1.2.7            ###不兼容!
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)

 

那为什么会装载1.3.9呢?执行export看看这个LD_LIBRARY_PATH环境变量吧!有没有指向类似/usr/local/apr/lib呢?

如果有的话,一般有人设置在这个文件:/etc/profile

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib

先把它注释并重新登录用户,再执行./httpd -V应该这样就可以了:

 

Server version: Apache/2.2.3
Server built:   Jul 15 2009 09:02:25
Server's Module Magic Number: 20051115:3
Server loaded:  APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)

 

那么是谁配置了LD_LIBRARY_PATH环境变量呢?我在网上查到安装tomcat的时候有用到,那应该是我同事加的,加完之后没有重启httpd是不会发现错误的。

 

唉,真郁闷。。。。。。。。。。。。。。。。。。。。。。。。

你可能感兴趣的:(apache,tomcat)