![](/img/trans.png)
[英]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.