我重新编译了几十次,为什么我的OpenSSL Library和Header还是不一样?

我重新编译了几十次,为什么我的OpenSSL Library和Header还是不一样?
openssl

OpenSSL support enabled
OpenSSL Library Version OpenSSL 0.9.8o 01 Jun 2010
OpenSSL Header Version  OpenSSL 1.0.1 14 Mar 2012

根据 PHP (5.4.4) 信息,这是我遇到的问题。我束手无策,无法理解为什么它不起作用。

这是我的配置:

./configure 
'--with-apxs2=/etc/apache24/bin/apxs' 
'--with-mysql' 
'--prefix=/etc/apache24/php' 
'--with-config-file-path=/etc/apache24/php' 
'--enable-force-cgi-redirect' 
'--disable-cgi' 
'--with-zlib' 
'--with-gettext' 
'--with-curl' 
'--with-mcrypt' 
'--with-gd' 
'--with-pdo' 
'--with-pdo-mysql' 
'--with-mysql-sock=/var/run/mysqld/mysqld.sock' 
'--with-libdir=lib32' 
'--with-openssl=shared,/usr'
 '--with-mysqli'

答案1

因为你链接针对错误版本的 OpenSSL。您获得了正确的标头,但无论出于何种原因(考虑到您对系统造成的损害程度,根据您过去的问题,可能的原因几乎无尽的),链接器仍然在查找和使用您现有的旧 0.9.8 版 libssl。

就我个人而言,我会告诉您的 PCI 审计员去将 Nessus 扫描塞入他的基础,但如果您不太敢冒险,至少要找一个知道如何构建软件的人来进入您的机器,找出您做错的地方并修复它。我们无法在问答网站上对您的系统进行逆向工程。

答案2

我遇到了同样的问题。我只需要执行 a make clean,下次编译时,openssl 标头和库版本都相同。

答案3

对我来说,这是一个不太明显的问题。我发现 php-扩展加载顺序可能很重要有时!

例如,如果我们将 curl.so 与较旧的 libssl.so 链接,将 openssl.so 与较新的 libssl.so 链接,并且如果 curl.so 在 openssl.so 之前加载,则两个扩展都将使用较旧的 openssl 库。

因此,在您的情况下,您已经在 curl 扩展中进行了编译,该扩展可能使用了与旧 ssl 库链接的 libcurl,因此旧的 ssl 库在您的 openssl 扩展之前加载。

相关内容