升级 OpenSSL 后编译安装 PHP 时提示 libssl 冲突

CentOS 7.2 将 OpenSSL 从 1.0.1e 升级到 1.1.0c 以后
编译安装 PHP 5.5.38 时
出现了 openssl 版本冲突的问题,报错如下

/usr/bin/ld: warning: libssl.so.10, needed by /usr/lib64/libssh2.so.1, may conflict with libssl.so.1.1
/usr/bin/ld: ext/openssl/.libs/xp_ssl.o: undefined reference to symbol 'SSLv3_server_method@@libssl.so.10'
/usr/lib64/libssl.so.10: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [sapi/cli/php] 错误 1

看起来像是有部分相关的文件没有从旧版替换到新版,所以导致冲突的产生。
希望大家帮忙分析一下

阅读 14k
4 个回答

1.openssl没有正确安装
2.安装中会提示一些问题
解决方案:

yum install libtool perl-core zlib-devel -y
# 自行下载1.1.1d版本
tar -zxvf openssl-1.1.1d.tar.gz
cd  openssl-1.1.1d
./config --prefix=/usr/local/openssl --openssldir=/usr/local/ssl shared
make && make install
# 创建软连接
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib/libssl.so /usr/lib

echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
echo "/usr/local/openssl/ssl/lib" >> /etc/ld.so.conf
# 更新动态库
ldconfig -v 
openssl version -a
ll libcrypto.so*
libcrypto.so.1.1.1

ln -s libssl.so.1.1 libssl.so.1.0
ln -s libcrypto.so.1.1 libcrypto.so.1.0
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏