我只是想在一个新的Ubuntu 20.04上安装PHP7.4,
默认情况下,执行简单的apt install php php-cli安装7.4版本,
但是当我做apt update && apt upgrade时,这个版本仍然是7.4.3而不是7.4.5!
请注意,我知道可以通过添加
ppa:ondrej/php存储库来解决这个问题。
我只是想了解,如果Ubuntu在默认情况下提供7.4版本,为什么不更新到最新版本呢?我们会永远在Ubuntu20.04.0版(而不是下一个版本)中获得7.4.3,即使在2-3年之后?唯一的选择是添加ondrej/php存储库?
编辑: PHP 7.4.6已经在几周前发布了,但是我的服务器上的版本仍然停留在7.4.3上。
发布于 2021-09-16 07:10:39
以前接受的 回答 是错误的。
这一索赔
一些软件包在几个月内仍然过时是很常见的
给人的印象是,仅在PHP团队发布几个月后,Ubuntu发行版就不断升级到最新的次要版本。
,那不是真的!
Ubuntu的更新策略
TL;Ubuntu博士的官方打包的PHP是最新的安全性和过时的bug修复。
下面是Ubuntu / Canonical实际上如何维护像PHP这样的官方包:
当Ubuntu准备发布LTS时,在某个时候会出现一个功能冻结 (详细信息)。这意味着即使打包的软件在Ubuntu的特性冻结之前和最后的LTS发布之后发布一个较新的次要版本(例如修复bug),这个小版本的更新也不会再进入Ubuntu。
在Ubuntu焦点Fossa 20.04 LTS的情况下,PHP冻结在7.4.3版本。这意味着焦点的php包将永远不会再得到一个小的版本更新(例如7.4.6),在整个支持寿命。
然而,并不意味着Fossa的php包永远得不到更新。
SRU
相反,它将被这些所谓的稳定版本更新或短SRU修补。
那么什么会进入SRU呢?
主要是针对的高影响bug进行修复,这可以归结为大部分时间的安全bug。有关Ubuntu所认为的高影响bug,请参见SRU。
无论如何,您最终得到的是Focal在其整个生命周期中接收多个修补版本的PHP7.4.3。换句话说,焦点Fossa中存在多个PHP7.4.3版本,正如您在包的变更日志中所看到的那样。它显示了多个版本,如7.4.3-4ubuntu1、7.4.3-4ubuntu2、7.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。再次,看看包的变更日志,看看构建中包含了什么。
影响PHP7.4的所有安全漏洞都修复了吗?
是。
与PHP7.4 ChangeLog相比,您将发现除了一个(仅受Windows影响的afaik)之外,所有安全问题(CVEs)都是在Ubuntu包中修复的。除此之外,只包含了一些非安全的bug修复程序。
Ubuntu的安全团队紧密地支持跟踪数据库,并维护自己的Ubuntu CVE跟踪器。
您应该使用Ubuntu的官方PHP包吗?
这取决于你的情况。我倾向于说这是一个很好的违约。
总之,以下是你应该根据的事实做出决定:
当您使用Ubuntu的官方PHP包时,您可以确保它在实际Ubuntu发行版的整个生命周期内都会收到安全更新(如果使用的是Fossa 20.04这样的LTS版本,则需要5年时间)。即使当php7.4达到寿命结束(2022年年底)时,Ubuntu的安全团队仍将修补php7.4的官方软件包。换句话说,即使PHP团队不再发布安全补丁,Ubuntu的安全团队也会这样做。
相反,当您使用类似Ondrej的PPA时,您将不得不在2022年之后切换到PHP 8。如果不这样做,您的PHP将不会得到更多的安全修复。
虽然Ubuntu的php包将得到安全修复,但它几乎不会得到其他类型的bug修复。要么你很幸运,你的软件没有受到影响,要么你就得解决这些bug。如果错误严重影响您的软件(例如性能问题),您可以考虑切换到PPA包。
发布于 2021-02-12 10:18:52
请使用下面的代码更新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储蓄与退出
php -v
您的php版本已经更新。
发布于 2020-05-26 23:42:22
Ubuntu官方存储库显示,7.4.3是最新的可用版本。因此,这并不是@暴雪所建议的apt或缓存的问题。
由于我们讨论的是Ubuntu的LTS发行版,因此由于稳定性原因,一些软件包在几个月内仍然过时是很常见的。(即使是补丁版本也会引入错误,使人认为是不可实现的,而且LTS应该是非常稳定和可实现的)
正如您在原始问题上所写的,最好的解决方案是使用ondrej/php存储库。
编辑:
我向ondrej询问此事,他轻轻地回答道:https://wiki.ubuntu.com/StableReleaseUpdates,上面写着:
一旦完成并发布了Ubuntu版本,它的更新只能在某些情况下发布,并且必须遵循一个称为“稳定版本更新”( SRU )的特殊过程。 2.何时 2.1。高冲击臭虫 一般情况下,稳定的版本更新只是为了修复高影响的bug. 2.2。其他安全案例 ..。
https://stackoverflow.com/questions/61765545
复制相似问题