悬而未决:在Rocky或CentOS Linux8中同时安装openssl1.1.1和1.0.2或0.9.8导致的冲突

问题起源:在Rocky或CentOS Linux8中自带了openssl 1.1.1用于SSH等,所以不能卸载!用yum install php安装的PHP是7.x系统,而我们有一个项目必须要用php5.4~5.6才能运行,而要命的就是它不支持openssl 1.1.x,最多只支持openssl 1.0.x !

解决方案:在这台服务器上多安装一个1.0.x版本的openssl,让php5.6使用它。同时不能影响openssl 1.1.x的正常运行。

尝试方法:先下载好openssl 1.0.2的源码包和php5.6.40源码包并解压。

第1次:直接用openssl 默认参数编译安装到一个独立目录/usr/local/openssl,再用参数 --with-openssl=/usr/local/openssl编译安装php,不出意料地报错,说是要使用-fPIC来重新编译openssl为独立模式。很显然,php的编译安装程序使用系统自带的openssl 1.1.1的共享库了。

第2次:带上参数-fPIC来重新编译安装openssl 到一个独立目录/usr/local/openssl,再用参数 --with-openssl=/usr/local/openssl编译安装php,很可惜,仍然报错。经过分析,应该是php的编译安装程序还是使用了系统自带的openssl 1.1.1的头文件和库了。

第3次:搜索了不少资料,最终通过给php的./configure加上参数CCFLAGS="-I/usr/local/openssl/include" LDFLAGS="-L/usr/local/openssl/lib"成功将openssl 1.0.2编译安装进了php5.6.40。通过phpinfo()查看,openssl扩展的版本号确实是1.0.2。很可惜的是,在php程序中用openssl的函数方法,一运行就导致进程崩溃!apache2.4报错“munmap_chunk(): invalid pointer“和“[core:notice]AH00052: child pid 365868 exit signal Aborted (6)“!我怀疑还是因为php的openssl扩展使用到了系统 自带的openssl 1.1.1的程序或库文件。

悬而未决:所以最终想要解决的就是 如何让php中的openssl扩展在运行时调用1.0.2目录中的openssl程序和库。同时不要影响系统自带openssl1.1.1的运行!(所以那种用ln将1.0.2链接或替换掉到系统 默认目录下的openssl方式应该是不行的)

你可能感兴趣的:(开源Linux,服务器配置优化,centos,linux,运维)