簡體   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