[英]How to compile PHP 7.4.33 correctly with OpenSSL 1.1.1 on Ubuntu 22.04
[英]Cannot compile PHP 7.4.30 on Ubuntu 22.04LTS
我在尝试在 Ubuntu Server 22.04LTS 上手动编译 PHP 7.4.x 时遇到问题。
PHP 7.4 和 OpenSSL 3.0 之间似乎存在兼容性问题,因为 php 编译失败并出现各种OSSL_DEPRECATEDIN_3_0
错误。
如果 PHP7.4 没有 OpenSSl 3 支持,是否仍然可以在 22.04LTS 上手动编译它?
它在 18.04LTS 上成功编译。
简而言之:你不能! 您需要从源代码编译 OpenSSL 1.1。
如果我可以建议一个替代方案! 查看 码头工人
我一直在尝试安装 PHP 7.4.30; 问题是由 Ubuntu 22.04 使用 libssl3 引起的,libssl1.1(我们需要的)一直存在,直到 impish(21.10)
在serverfault.com的回复中,它提到:
您可以使用--with-openssl
或--with-openssl-dir
来解决此问题,指示您的自定义 openssl 构建在哪里,例如,如果您从/opt/openssl
中的源代码下载并构建它,您可以将以下内容添加到您的构建选项
--with-openssl-dir=/opt/openssl
挖掘一些旧的 SO 答案,我发现了这个例子:
phpbrew install 7.1 +default +openssl=shared -- --with-openssl-dir=/openssl/openssl
检查官方 phpbrew wiki 后,我发现以下步骤可以在 Ubuntu 22.04 中从源代码编译和安装 OpenSSL 1.1:
cd $HOME
wget https://www.openssl.org/source/openssl-1.1.1i.tar.gz
tar xzf $HOME/openssl/openssl-1.1.1i.tar.gz
cd openssl-1.1.1i
./Configure --prefix=$HOME/openssl-1.1.1i/bin -fPIC -shared linux-x86_64
make -j 8
make install
对我来说值得一提的是:
export PKG_CONFIG_PATH=$HOME/openssl-1.1.1i/bin/lib/pkgconfig && \
phpbrew install 7.4.29 +default
export PKG_CONFIG_PATH=$HOME/openssl-1.1.1i/bin/lib/pkgconfig && \
phpbrew install 7.4.30 +default
对于使用 Ubuntu 22.04 Docker 映像的任何人,这里是 OpenSSL 1.1.1p 的构建和 php 编译选项:
ENV OPENSSL_VERSION openssl-1.1.1p
RUN set -xe \
&& curl -fSL "https://www.openssl.org/source/$OPENSSL_VERSION.tar.gz" -o "$OPENSSL_VERSION.tar.gz" \
&& ls -al \
&& tar xzf $OPENSSL_VERSION.tar.gz \
&& cd $OPENSSL_VERSION \
&& ./Configure --prefix=/opt/$OPENSSL_VERSION/bin -fPIC -shared linux-x86_64 \
&& make -j 8 \
&& make install \
&& export PKG_CONFIG_PATH=/opt/$OPENSSL_VERSION/bin/lib/pkgconfig
将以下内容添加到 php 编译配置选项中
--with-openssl \
PKG_CONFIG_PATH=/opt/$OPENSSL_VERSION/bin/lib/pkgconfig \
PHP 7.4.30 (cli) (built: Jun 28 2022 15:51:41) (NTS) 版权所有 (c) The PHP Group Zend Engine v3.4.0, 版权所有 (c) Zend Technologies with Zend OPcache v7.4.30, 版权所有 ( c),由 Zend Technologies 提供
openssl
OpenSSL support => enabled OpenSSL
Library Version => OpenSSL 1.1.1p 21 Jun 2022
OpenSSL Header Version => OpenSSL 1.1.1p 21 Jun 2022
Openssl default config => /opt/openssl-1.1.1p/bin/ssl/openssl.cnf
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.