zoukankan      html  css  js  c++  java
  • 关于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默认加载的库路径)下就行了。

  • 相关阅读:
    [公告]Google个性化主页可以正常阅读博客园的RSS了
    致歉
    [公告]网站程序已经升级到ASP.NET 2.0
    GTF: Great Teacher Friedman
    Node.js : exports と module.exports の違い
    拨开历史的迷雾从篡夺者战争到五王之战的政经原因
    javascript模板系统 ejs v10
    window.name + postMessage实现不用代理页的跨域通信
    node.js Domain 時代のエラー処理のコーディングパターン
    鲜为人知的get,set操作符
  • 原文地址:https://www.cnblogs.com/yoyotl/p/4698958.html
Copyright © 2011-2022 走看看