J. *_*Doe 7 php ubuntu php-7.4
我只是想在新的 Ubuntu 20.04 上安装 PHP 7.4,
做一个简单的apt install php php-cli安装默认7.4版本,
但是当我这样做时apt update && apt upgrade,版本仍然7.4.3不是7.4.5!
请注意,我知道这可以通过添加
ppa:ondrej/php存储库来解决。
我只是想了解,如果 Ubuntu 默认附带 7.4,为什么不更新到最新版本?即使在 2-3 年后,我们也会一直7.4.3使用 Ubuntu 20.04.0(不是下一个版本)吗?唯一的选择是添加ondrej/php存储库?
编辑:PHP 7.4.6 已于几周前发布,但我服务器上的版本仍停留在 7.4.3 上。
rmo*_*stl 12
之前接受的答案是错误的。
这种说法
某些软件包几个月后仍然过时是很常见的
给人的印象是,Ubuntu LTS 版本在 PHP 团队发布几个月后就不断升级到最新的次要版本。
这不是真的!
TL;DR Ubuntu 的官方打包 PHP 在安全方面是最新的,在错误修复方面是过时的。
以下是 Ubuntu / Canonical 实际维护 PHP 等官方软件包的方式:
当 Ubuntu 准备 LTS 版本时,会在某个时间点出现功能冻结(详细信息)。这意味着即使打包软件在 Ubuntu 功能冻结之前和最终 LTS 发布之后发布了较新的次要版本(例如修复错误),该次要版本更新也不会再进入 Ubuntu。
对于 Ubuntu Focal Fossa 20.04 LTS,PHP 被冻结在版本 7.4.3。这意味着 Focal 的 php 软件包在其支持生命周期内将永远不会再获得次要版本更新(例如 7.4.6)。
然而,这并不意味着 Fossa 的 php 包永远不会得到更新。
事实恰恰相反:它将用这些所谓的稳定版本更新或短SRU进行修补。
那么 SRU 包含哪些内容呢?
主要修复影响较大的错误,这些错误在大多数情况下都归结为安全错误。请参阅SRU以了解 Ubuntu 认为影响较大的错误。
无论如何,您最终得到的是 Focal Fossa 在其整个生命周期中收到多个 PHP 7.4.3 补丁版本。换句话说,Focal Fossa 中存在多个 PHP 7.4.3 版本,正如您在软件包的更改日志中看到的那样。它显示了多个版本,例如、7.4.3-4ubuntu1等,您可以看到大多数安全错误都已修复。7.4.3-4ubuntu27.4.3-4ubuntu2.5
问题是php -v总是会报告PHP 7.4.3。但是,请看一下输出的详细信息:PHP 7.4.3 (cli) (built: Jul 5 2021 15:13:35) ( NTS )。它于 2021 年 7 月 5 日构建,已经暗示看似旧的 7.4.3 版本发生了一些事情。
要真正确定安装的是哪个版本,请询问 apt: apt policy php7.4。
输出:
在这种情况下7.4.3-4ubuntu2.5已安装。再次,查看包的更改日志以了解该版本中包含的内容。
是的。
与PHP 7.4 ChangeLog相比,您会发现除一个(据我所知仅影响 Windows)之外的所有安全问题 (CVE) 都已在 Ubuntu 软件包中修复。除此之外,仅包含一些非安全错误修复。
Ubuntu 的安全团队正在密切跟踪CVE 数据库,并维护自己的Ubuntu CVE 跟踪器。
这取决于你的情况。我倾向于说这是一个很好的默认值。
无论如何,您应该根据以下事实做出决定:
当您使用 Ubuntu 的官方 PHP 软件包时,您可以确定它将在实际 Ubuntu 版本的整个生命周期内收到安全更新(对于像 Focal Fossa 20.04 这样的 LTS 版本,则为 5 年)。即使 PHP 7.4 生命周期结束(2022 年底),Ubuntu 的安全团队仍会修补官方 php7.4 软件包。换句话说,即使 PHP 团队不再发布安全修复程序,Ubuntu 的安全团队也会发布。
相比之下,当您使用 Ondrej 的 PPA 之类的东西时,您必须在 2022 年底后切换到 PHP 8。如果不这样做,您的 PHP 将不再获得安全修复。
虽然 Ubuntu 的 php 软件包将获得安全修复,但它几乎不会获得其他类型的错误修复。要么你很幸运并且你的软件没有受到影响,要么你将不得不解决这些错误。如果错误严重影响您的软件(例如性能问题),您可以考虑切换到 PPA 包。
Ubuntu 官方存储库显示 7.4.3 是最新的可用版本。所以这不是@blizzo 建议的 apt 或缓存问题。
由于我们谈论的是 Ubuntu 的 LTS 版本,因此由于稳定性原因,某些软件包会过时几个月是很常见的。(即使是补丁版本也可能会引入一些让人觉得不可靠的错误,而 LTS 旨在非常稳定和可行)
正如您在原始问题上所写,最好的解决方案是使用ondrej/php存储库。
编辑:
我询问了 ondrej,他用这个链接轻轻地回答:https : //wiki.ubuntu.com/StableReleaseUpdates说:
一旦完成并发布了 Ubuntu 版本,它的更新仅在某些情况下发布,并且必须遵循称为“稳定版本更新”或 SRU 的特殊程序。
2.什么时候
2.1. 高影响错误
通常,稳定版本更新只会发布以修复影响较大的错误。
2.2. 其他安全案例
...
请使用以下代码更新 php 7.4.15
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php7.4 php7.4-cli php7.4-common php7.4-fpm
sudo apt-get install -y php7.4-mysql php7.4-dom php7.4-simplexml php7.4-ssh2 php7.4-xml php7.4-xmlreader php7.4-curl php7.4-exif php7.4-ftp php7.4-gd php7.4-iconv php7.4-imagick php7.4-json php7.4-mbstring php7.4-posix php7.4-sockets php7.4-tokenizer
sudo apt-get install -y php7.4-mysqli php7.4-pdo php7.4-sqlite3 php7.4-ctype php7.4-fileinfo php7.4-zip php7.4-exif
sudo nano /etc/php/7.4/fpm/php.ini
Find: cgi.fix_pathinfo => Remove semi-colon and set 0
cgi.fix_pathinfo=0
Run Code Online (Sandbox Code Playgroud)
保存并退出
php -v
您的 php 版本已更新。
| 归档时间: |
|
| 查看次数: |
2254 次 |
| 最近记录: |