我以前运行Apache 2.2.20和openssl 1.0.0e。 我安装了openssl 1.0.1,然后下载apache 2.4.1的压缩包,并用--prefix=/usr/local
安装apr 1.4.6&apr-util 1.4.1。 我configuration了apache2:
sudo ./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-deflate --enable-proxy --enable-proxy-balancer --enable-proxy-http --enable-rewrite --enable-cache --enable-mem-cache --enable-ssl --enable-headers --with-mpm=worker --with-included-apr
但是,运行sudo make
后,我得到一个错误:
httpd-2.4.1/support/ab.c:2227: undefined reference to `SSLv2_client_method'
什么是造成这个错误,我该如何纠正?
你可能已经建立了禁用SSLv2的openssl,有些发行版已经禁用了(Debian,从7.0开始 – 这是一个)。 看看源代码,看起来好像定义了OPENSSL_NO_SSL2预处理器标志,apache将不会调用SSLv2_client_method()函数。
它与OpenSSL编译无关。 PHP是导致错误的罪魁祸首。
(注意:这是OpenSSL的另一个问题,它可能会阻止你生成openssl.so和opencrypto.so共享库)
这是它是如何发生的概述。 PHP编译它的编译,当“make install”被给出时,它将libphp * .so复制到/ usr / local / apache2 / modules。
这个错误的源代码是/usr/local/php-5.5.3/ext/openssl中的 openssl.c
所以简单的解决方案是在顶层Makefile中处理它。 通过添加CPPFLAGS = -D_REENTRANT -DTHREAD = 1 -DOPENSSL_NO_SSL2
在运行配置脚本后进行上述更改。 希望这可以帮助 :)
你也可以下载openssl的tarbal并编译openssl
./config shared no-ssl2
这将设置Jon Lin提到的标志OPENSSL_NO_SSL2。
尝试与另一个Apache版本。 与Apache 2.2.15的错误是存在的,但是当我更改为Apache 2.2.27 “SSLv2_client_method ”的引用错误简单地消失
编辑线是:
./configure --with-ssl --enable-ssl
就这样。