【问题标题】:how to make httpd work with two different versions of openssl如何使 httpd 与两个不同版本的 openssl 一起工作
【发布时间】:2012-03-13 14:02:36
【问题描述】:

我的操作系统是 CentOS 6.2。 我需要使用 php 5.2.4,这取决于 openssl 0.9.8e。但是 openssl 1.0.x 是随 OS 一起提供的。 所以我构建了openssl 0.9.8e。 现在我的操作系统上有 openssl 0.9.8e 和 php 5.2.4。 /opt/php5.2.4/ /opt/openssl0.9.8e/

php cli 运行正常,但是当我将 php 与 apache 一起使用时。 Httpd 无法启动。 Httpd 是从 CentOS 仓库安装的。

问题似乎是—— httpd使用了libmysql.so,依赖于openssl 1.0.x。 Httpd也用了libphp5.so,依赖openssl 0.9.8e。

我怎样才能让它们一起工作?

【问题讨论】:

    标签: linux lamp apache


    【解决方案1】:
    1. 接受这样一个事实:当不同版本的库的符号表对全局命名空间有贡献时(即标准 DT_NEEDED 机制或将 dlopen 与 RTLD_GLOBAL 结合使用),您无法在单个进程中可靠地混合不同版本的库。这意味着你要么必须让你的 httpd 部分(包括 sql)使用 openssl 0.8,要么让 php 使用 1.0。鉴于从那以后 openssl 几乎没有变化,后者应该不会特别难。
    2. 或者,您可以在 FastCGI 模式下运行 PHP。这也允许使用例如apache2-event 而不是 ye olde prefork-er。有几种方法可以解决这个问题(选择守护进程和 apache 模块)——开箱即用的方法是 php-fpm-5.3.3+ 和 apache-2.4+ 的 mod_proxy_fcgi。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 2021-01-23
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 2023-01-10
      • 1970-01-01
      相关资源
      最近更新 更多