我的操作系统是CentOS 6.2。
我需要使用php 5.2.4,它取决于openssl 0.9.8e。但是openssl 1.0.x随操作系统一起提供。
所以我建立了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,它依赖于openssl1.0.x。
Httpd还使用了libphp5.so,它依赖于openssl 0.9.8e。
如何使它们一起工作?
最佳答案
忍受一个事实,即当符号表对全局名称空间起作用时(即标准DT_NEEDED机制或通过将dlopen与RTLD_GLOBAL一起使用),您将无法在一个进程中可靠地混合使用不同版本的库。这意味着您要么必须获取httpd部件(包括sql)才能使用openssl 0.8,要么要使php使用1.0。鉴于openssl从那以后几乎没有变化,后者不应该特别困难。
或者,您可以在FastCGI模式下运行PHP。这也允许使用例如apache2-event而不是旧的prefork-er。有几种方法可以实现这一目标(选择守护程序和apache模块)—即开箱即用的是php-fpm-5.3.3 +和apache-2.4 +的mod_proxy_fcgi。
关于linux - 如何使httpd与openssl的两个不同版本一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9685559/