通过 Docker 方法运行 php-fpm 7.4

通过 Docker 方法运行 php-fpm 7.4

我已经关注本教程在 Ubuntu 22.10 上安装 php7.4。

据我所知,我只需要添加这个 PPA 并使用以下命令更新我的存储库

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

然后使用以下方式安装 php7.4

sudo apt-get instal php7.4

但是,我收到了这个错误:

nugroho@vostro:~$ sudo apt-get update
Hit:1 https://dl.google.com/linux/chrome/deb stable InRelease
Ign:2 https://ppa.launchpadcontent.net/ondrej/php/ubuntu kinetic InRelease
Err:3 https://ppa.launchpadcontent.net/ondrej/php/ubuntu kinetic Release
  404  Not Found [IP: 185.125.190.52 443]
Hit:4 http://archive.ubuntu.com/ubuntu kinetic InRelease   
Get:5 http://archive.ubuntu.com/ubuntu kinetic-updates InRelease [90,7 kB]
Hit:6 http://archive.ubuntu.com/ubuntu kinetic-backports InRelease
Get:7 http://archive.ubuntu.com/ubuntu kinetic-security InRelease [90,7 kB]
Reading package lists... Done    
E: The repository 'https://ppa.launchpadcontent.net/ondrej/php/ubuntu kinetic Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

nugroho@vostro:~$ sudo apt-get install php7.4
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package php7.4 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'php7.4' has no installation candidate

是不是 Ubuntu 22.10 还不支持 php7.4,还是我操作错了?

以下是有关我的安装的一些详细信息:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.10
Release:    22.10
Codename:   kinetic

答案1

我按照下面的步骤操作,效果很好!(感谢 Item-alertReddit 链接

从 22.04 升级到 22.10 和 php 5.6 后我遇到了同样的问题。(我的情况是 php 7.4)我通过更改解决了这个问题/etc/apt/sources.list.d/ondrej-ubuntu-php-kinetic.list

deb https://ppa.launchpadcontent.net/ondrej/php/ubuntu/ jammy main
#deb-src https://ppa.launchpadcontent.net/ondrej/php/ubuntu/kinetic main

当然,运行 apt update 命令

答案2

这里有几个因素在起作用。

首先,PHP 版本默认遵循 Ubuntu。因此,在 Ubuntu 22.10 上安装除 8 之外的任何 PHP 版本都不是默认的。

一种方法是使用ppa:ondrej/php。但是,PPA 需要针对每个发行版进行更新,而 22.10 尚未更新。

另一种选择是使用容器安装 PHP(可能还有 Apache 等)。在这种情况下,PHP 版本可以独立于系统。

不建议手动安装任何非默认 PHP 版本,因为从长远来看,这会导致包依赖问题。

答案3

dpkg install我通过从 Ubuntu 软件包中手动下载并安装 libicu70 库(使用)解决了同样的问题https://packages.ubuntu.com/jammy/amd64/libicu70/download

接下来sudo apt install php7.4-intl一切顺利。

编辑依赖性问题仅在我忘记提及的第一步之后出现:该 PPA 尚未提供使用jammy而不是kinetic 的kinetic功能ppa:ondrej/php。 (请注意,整个答案的预期寿命非常短。)

答案4

通过 Docker 方法运行 php-fpm 7.4

您可能希望考虑在 Docker 容器中安装 PHP 7.4,同时 Apache 在主机系统中运行。

我发了一个完整指南在 Stack Overflow 上介绍了必要的一般(与版本无关)步骤,但在本文中,我将重点介绍在 Ubuntu 22.10 上使用 PHP 7.4 的具体考虑因素——尤其是现在 PHP 认为 7.4 已经过了使用寿命。

基本原理

我决定采用这种方式,因为我认为通常的ppa:ondrej/phpPPA 不会更新到包含 7.4。他们的网站, “仅支持 PHP 版本...不要要求终止 PHP 版本。” PHP 7.4 现已终止使用,因此我们不应期望添加此 PPA。

此外,正如其他人在此主题中提到的,混合为不同版本设计的 PPA 可能会导致未来出现依赖性错误。

考虑:更新

官方 PHP 7.4 Docker 镜像不再更新(基于github为它),所以不要php:7.4-fpm在生产中使用该图像(或任何面向互联网的使用)原样。不过,在本地主机开发环境中,它应该是相当安全的。

注意 - Debian / Ubuntu 将继续即使 PHP 已经宣布其 EOL,一段时间内仍可接收 PHP 7.4 更新。应该可以基于 Debian/Ubuntu 7.4 php-fpm 设置 docker 容器,该容器应该仍受支持,直到 20.04 达到 EOL。dockerhub 上关于 PHP7.4 的结果有 1,515 个,所以很有可能某人已经这样做了。

此外,如果您选择这种方式是因为您打算部署到生产环境,您还可能希望研究自动构建方法以保持容器更新。虽然通常不建议在非 LTS 版本上部署生产 Web 服务器。

考虑:调整

还应注意,调整设置或添加未来的插件很麻烦,因为它需要完整的 docker 重建,而不仅仅是编辑配置文件或运行单个 apt 命令。

一种可能的解决方法是您可以在虚拟主机文件夹上共享 php-fpm 配置。

下一步

按照主要指南这里了解一般说明。您可能不想使用官方php:7.4-fpm软件包,而是希望探索非官方镜像以缓解 EOL 问题。

相关内容