我只是想在新的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年后,我们会在Ubuntu 20.04.0 (不是下一个发行版)中始终获得7.4.3
吗?唯一的选择就是添加ondrej/php
存储库?
编辑:PHP 7.4.6已于几周前发布,但服务器上的版本仍停留在7.4.3上。
答案 0 :(得分:4)
Ubuntu official repository显示7.4.3是最新的可用版本。因此,@ blizzo建议的apt或缓存问题不存在。
由于我们正在谈论Ubuntu的LTS版本,因此出于稳定性的原因,某些软件包通常过时了几个月。 (甚至补丁版本也会引入使人认为不可靠的错误,而LTS则意味着非常稳定和可实现)
正如您在原始问题上所写的那样,最好的解决方案是使用ondrej/php
存储库。
编辑:
我问ondrej,他轻轻地回答了这个链接:https://wiki.ubuntu.com/StableReleaseUpdates,内容为:
Ubuntu版本一旦完成并发布,它的更新仅在某些情况下才发布,并且必须遵循称为“稳定版本更新”或SRU的特殊程序。
2。什么时候
2.1。高影响力的错误
通常只会发布稳定版本的更新,以修复具有重大影响的错误。
2.2。其他安全案例
...
答案 1 :(得分:4)
请使用以下代码更新 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 版本已更新。
答案 2 :(得分:0)
apt
可能有问题。无论出于何种原因,apt update && apt upgrade
似乎都指向该软件的较旧版本。如果绝对必要,则可能确实需要通过GitHub或其他受信任的源手动安装最新的PHP版本。
答案 3 :(得分:0)
请注意,这可能会毁了一切。我一直在使用 Ubuntu 附带的 PHP 7.4.3。我添加 ppa:ondrej/php
的体验并不好。
apt upgrade
首先要我安装 PHP 7.4 和 PHP 8.0。然后它使 PHP 8.0 成为默认版本,并希望我运行 apt autoremove
以摆脱重复的 PHP 7.4 安装。
重新启动 Apache 导致它失败并出现错误并关闭了我的所有网站。
apt install libapache2-mod-php7.4
是恢复服务器所必需的,现在显示 PHP 7.4.16,但我所有的网站都抛出服务器错误,表明我的 PHP 扩展都没有安装。重新安装 PHP 7.4 的所有扩展后,另一次 Apache 重启恢复了我的网站。
update-alternatives --config php
还帮助将 CLI 版本重置回 7.4.16。
答案 4 :(得分:0)
发现这个问题,但没有一个答案对我有用,有效的是:
sudo a2dismod php7.2
sudo a2enmod php7.4
sudo service apache2 restart
根据您当前的模块调整 php7.2