1.现象
安装apache时,在安装完后去启动报错如下。
httpd: Syntax error on line 161 of /etc/httpd.conf/httpd.conf: Cannot load modules/mod_dir.so into server: /usr/local/apache2/modules/mod_dir.so: undefined symbol: apr_array_clear
导致apache启动不了,去配置文件把161行注释掉,apache能启动,但是生成error文件,导致无法访问网页,报错信息如下。
/apache/httpd/bin/httpd: symbol lookuperror: /apache/httpd/bin/httpd: undefined symbol: apr_skiplist_init
2.原因
libapr-1.so.0文件没有指向apache自己的lib库,没有查出编译过程中什么原因导致libapr-1.so.0文件没有指向自己的lib库。
3.解决办法
去其他服务器搭建一个一模一样环境的Apache,把httpd文件拷贝过来(不会去修改二进制文件httpd的lib库的指向),在启动就好使了。
4.httpd 文件信息比对
错误的 httpd 文件信息
[root@shtpfscpwjtestv01 bin]# ldd /apache/httpd/bin/httpd
l linux-vdso.so.1 => (0x00007fffbdfff000)
libpcre.so.1 => /apache/pcre/lib/libpcre.so.1(0x00007f680a444000)
libaprutil-1.so.0 => /apache/httpd/apr-util/lib/libaprutil-1.so.0(0x00007f680a21e000)
libexpat.so.0 => /apache/httpd/apr-util/lib/libexpat.so.0(0x00007f6809ff7000)
libapr-1.so.0 => /usr/lib64/libapr-1.so.0(0x00007f6809dcb000)
libuuid.so.1 => /lib64/libuuid.so.1(0x00000034e0e00000)
librt.so.1 => /lib64/librt.so.1(0x00000034d9a00000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00000034e2e00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00000034d8e00000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000034d8a00000)
libc.so.6 => /lib64/libc.so.6 (0x00000034d8600000)
/lib64/ld-linux-x86-64.so.2 (0x00000034d8200000)
libfreebl3.so => /usr/lib64/libfreebl3.so (0x00000034e3200000)
正确的 httpd 文件信息
[root@shtpfscpwjtestv01 bin]# ldd /tpsys/apache/httpd/bin/httpd
linux-vdso.so.1 => (0x00007fffdf155000)
libpcre.so.1 => /apache/pcre/lib/libpcre.so.1 (0x00007fbdf0250000)
libaprutil-1.so.0 => /apache/httpd/apr-util/lib/libaprutil-1.so.0 (0x00007fbdf002a000)
libexpat.so.0 => /apache/httpd/apr-util/lib/libexpat.so.0 (0x00007fbdefe03000)
libapr-1.so.0 => /apache/httpd/apr/lib/libapr-1.so.0 (0x00007fbdefbd0000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00000034e0e00000)
librt.so.1 => /lib64/librt.so.1 (0x00000034d9a00000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00000034e2e00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00000034d8e00000)
libc.so.6 => /lib64/libc.so.6 (0x00000034d8600000)
/lib64/ld-linux-x86-64.so.2 (0x00000034d8200000)
libfreebl3.so => /lib64/libfreebl3.so (0x00000034e3200000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000034d8a00000)