繁体   English   中英

无法在 Ubuntu 22.04LTS 上编译 PHP 7.4.30

[英]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)

ubuntu 包 libssl1.1

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

对我来说值得一提的是:

  1. OpenSSL 1.1.1i 适用于 php 7.4.29
export PKG_CONFIG_PATH=$HOME/openssl-1.1.1i/bin/lib/pkgconfig && \
phpbrew install 7.4.29 +default
  1. OpenSSL 1.1.1p 适用于 php 7.4.30
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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM