14
8月
2026
如何将 PHP 从 8.1 版本升级到 8.4
14:58

如何将 PHP 从 8.1 版本升级到 8.4

14 8月 2026 14:58

2026年,有两种方式更新PHP。

简介

许多版本的 Linux 仍然使用 PHP 8.1。 现代项目可能需要更新版本的 8.3 或 8.4 才能运行。 可安装的最新版本是 PHP 8.5。

第一种方式- 从 oandrej PPA 存储库安装 PHP 8.3、8.4 或 8.5

sudo add-apt-repository ppa:ondrej/apache2
sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php

第二种方式- 从第三方 deb 存储库安装 PHP https://packages.sury.org/php/
在本文中,我研究了第二种方法 - 来自packages.sury.org/php/ 的 deb。

如何安装新版本的 PHP

首先,我建议禁用以前的存储库并删除过时的 PHP7。

sudo add-apt-repository --remove ppa:ondrej/php
sudo apt remove php7*

留言:

该存储库正在合并到 https://packages.sury.org/php/

如果您在网站上阅读 https://packages.sury.org/php 文件 自述文件.txt,安装路径如下:

1) 准备安装:更新包缓存并安装从 Internet 下载存储库密钥文件所需的实用程序。

sudo apt-get update
sudo apt-get -y install lsb-release ca-certificates curl

2) 从 https://packages.sury.org/ 下载的 debsuryorg-archive-keyring.deb 包
在本地 PC 上安装存储库签名密钥。

首先下载包安装DEB文件到tmp文件夹下:

curl -sSLo /tmp/debsuryorg-archive-keyring.deb \
https://packages.sury.org/debsuryorg-archive-keyring.deb

然后用密钥安装包

dpkg -i /tmp/debsuryorg-archive-keyring.deb

密钥将出现在 /usr/share/keyrings/ 文件夹中,
其中是钥匙串文件的名称: debsuryorg-archive-keyring.gpg

3) 在 /etc/apt/sources.list.d/ 文件夹中,为新存储库创建一个条目

php.list 文件只有一行内容:

deb [signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg] https://packages.sury.org/php/ jammy main

您需要指出您的发行版的代码名称,而不是 jammy。
可以使用命令找到发行版名称

lsb_release -a

您还可以通过 Linux 版本号找到代号。
最流行的 Linux 版本有以下代码字:

  • Ubuntu 20.04 LTS -焦点
  • Ubuntu 22.04 LTS -杰米
  • Ubuntu 24.04 LTS -高贵的
  • Linux Mint 21 -杰米
  • Linux Mint 22 -高贵的
  • Debian 11 -靶心
  • Debian 12 -书虫
  • Debian 13 -特里克西

4)安装php 8.4

sudo apt-get update
sudo apt-get install php8.4-common

问题及解决方案

Linux操作系统存储库的优先级可能高于第三方存储库,导致无法从第三方存储库安装程序和库。

创建一个文件来指示安装优先级,即将软件包固定到存储库:APT Pinning

sudo nano 

文件内容:

软件包:libgd3
引脚:release o=deb.sury.org
引脚优先级:1001

包:php*
引脚:release o=deb.sury.org
引脚优先级:1001

1001 - 表示最高优先级,高于OS系统存储库的优先级。

此前,Ubuntu 系统存储库中的 LibGD3 库与 PHP 图形模块要求发生冲突 php8.4-gd 使用LibGD3版本2.3.3,

  • 在系统存储库版本2.3.0中,
  • deb.sury.org 存储库中的版本 2.3.3 将安装为具有更高优先级 1001。

该命令是这样说的:

apt-cache policy libgd3

现在就不会有错误了。 我们照常做:

sudo apt-get update
sudo apt-get install php8.4-common

检查 PHP 版本

php --version

默认情况下切换操作系统中的 PHP 版本

仅当 PHP 版本不是所需版本时:

sudo update-alternatives --config php

安装 Apache 模块

sudo apt-get install libapache2-mod-php8.4

错误“未定义常量IMG_JPG”的原因

运行使用图形的 PHP 项目时,您可能会收到有关 IMG_JPG 的错误

如果您已完成前面的步骤(安装 php 最新版本之一),则需要另外安装该模块:

sudo apt-get install libgd3
sudo apt-get install php8.4-gd

要安装的 Apache2 模块列表

对于该项目,我还安装了 Apache Web 服务器包和模块:

sudo apt install php8.4 php8.4-cli php8.4-common
sudo apt install libapache2-mod-php8.4 
sudo apt install php8.4-curl php8.4-intl php8.4-mbstring php8.4-mysql
sudo apt install php8.4-readline php8.4-xml php8.4-yaml php8.4-zip php8.4-apcu

启用 PHP 模块

sudo a2enmod php8.4
sudo service apache2 restart

切换 FastCGI FPM/常规模块配置

可以通过命令查看模块的状态

sudo systemctl status php8.4-fpm

如果 FPM 版本与 PHP 相同,即本例中为 8.4,则我们什么都不做。

如果版本不同,请禁用FCGI和setenvif模块
sudo a2dismod actions alias proxy_fcgi setenvif
sudo a2disconf php8.4-fpm
让我们打开它们
sudo a2enconf php8.4-fpm
sudo systemctl reload apache2

sudo a2enmod 操作别名 proxy_fcgi setenvif


本文已使用 PHP 版本 8.4 进行测试,但如果您替换终端命令中的相应数字,则可能适用于版本 8.3 和 8.5。



相关出版物