编程

在 Debian 和 Ubuntu 中 安装升级 PHP 8.5

13 2025-11-24 16:16:00

PHP 8.5 支持管道语法、新的 URI 扩展,并包含大量弃用项和性能改进,是一个经过精心打磨的 PHP 版本,现已正式发布。

设置 Ubuntu 或 Debian 服务器,或从之前的 PHP 版本升级,都是一个快速的过程。本指南旨在详细解释这些步骤,并列出需要注意的事项。

本指南适用于 Debian、Ubuntu 及其衍生发行版,并解释了如何使用预编译的二进制文件安装 PHP 8.5。安装完成后,可以使用 `apt update` 轻松应用错误修复和安全补丁。本文的其余部分使用了由 Ondřej Surý 维护的 PHP APT 软件仓库。多年来,Ondřej 的 PHP 软件仓库一直是 Ubuntu、Debian 及其衍生发行版上 PHP 的事实标准软件仓库。

或者,也可以从源代码编译 PHP。

PHP 8.5 的向后兼容性问题

虽然 PHP 8.5 与 PHP 8.4 基本兼容,但某些更改可能会导致现有应用程序无法正常运行。PHP 8.5 引入了一些合理的弃用项,但这些弃用项旨在强制执行预期和推荐的 API,并不会导致现有应用程序无法正常运行。

PHP 8.5 不会解包任何 PHP 扩展,也不会移除任何在 PHP 8.4 或更高版本中受支持的 PHP 函数、常量或类。

  • 在 PHP 8.5 中,opcache 扩展不再是可选的。虽然可以禁用 opcache,但它现在始终包含在内(类似于 PCRE、Hash、Filter 等核心扩展)。因此,无需再安装 Opcache 扩展。
  • PHP 8.5 新增了两个核心扩展:urilexbor。它们也始终包含在内。
  • PHP 8.5 引入了一个新的 max_memory_limit INI 指令,用于将 memory_limit 的值限制为 max_memory_limit 设置的最大值。此新指令默认处于禁用状态。
  • php -z 命令行选项已被移除。该选项已失效一段时间,并且已有跨版本兼容的替代方案。
  • disable_classes INI 指令也被移除。

在继续操作之前,请务必备份系统。除非另有说明,以下步骤均为非破坏性操作(即不会删除任何文件)。但是,备份的重要性怎么强调都不为过。

PHP 8.5 将接收总共四年的安全更新,其中前两年还将包含漏洞修复。

1. 记录现有 PHP 软件包

升级现有 PHP 环境时,请记录当前已安装的 PHP 扩展列表。此列表有助于安装相同的 PHP 8.5 扩展集。

保存 php -m 的输出

php -m 会输出当前已启用的 PHP 扩展列表。此列表有助于后续确保 PHP 8.5 也安装了相同的扩展:

以下命令会将 `php -m` 的输出保存到文件并将其显示在屏幕上:

php -m | tee php-m-output.txt

保存 dpkg -l 的输出

dpkg -l 列出所有使用 dpkgapt 使用的工具)安装的软件包。以下命令列出所有软件包,筛选出名称中包含 php 的软件包,并将结果保存到文件中,并在屏幕上显示:

dpkg -l | grep php | tee dpkg-l-output.txt

2. 添加 ondrej/php PPA/DPA

截至 Ubuntu 24.10,Ubuntu 系统本身并不提供 PHP 8.5。Ondřej Surý 的 PHP 软件包仓库包含 PHP 8.5 以及多个 PECL PHP 扩展。

将此仓库添加为软件包源后,即可使用标准的 apt 命令进行初始安装和更新。

Ubuntu PPA

sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php # Press enter to confirm.
sudo apt update

Debian DPA

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

# Download and add the signing key
sudo curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

sudo apt-get update

3. 安装新的 PHP 8.5 软件包

将软件源添加到 apt 源后,安装新的 PHP 8.5 软件包只需运行 apt install 命令并指定 PHP 8.5 软件包名称即可。

所有 PHP 8.5 软件包都带有 php8.5- 前缀,并且可以与其他 PHP 版本同时安装。

安装 PHP CLI

sudo apt install php8.5-cli

该命令将安装 PHP 8.5 CLI 可执行文件及其依赖项。要测试安装是否成功,请使用 php -v 命令进行测试。

php -v

这将输出 PHP 版本以及可选的构建提供程序和版权信息。

安装 PHP 扩展

你可以通过安装带有 php8.5- 前缀的软件包来安装其他 PHP 扩展,例如 mbstringcurlintlreadline。例如,要安装 PHP 8.5 的 mbstring 扩展,请安装 php8.5-mbstring 软件包。

从旧版本 PHP 升级时,请参考步骤 1 中保存的 dpkg-l-output.txt 文件。如有必要,请确保安装相同的软件包,只需将 phpX.Y-ABC 模式替换为 php8.5-ABC 即可。

以下命令安装了一些最常用的 PHP 扩展,这些扩展适用于许多常见的 PHP 应用程序:

sudo apt install php8.5-common php8.5-{bcmath,bz2,curl,gd,gmp,intl,mbstring,openssl,readline,xml,zip}

安装完成后,运行 php -m 命令,即可显示已安装的 PHP 扩展列表。

Opcache 扩展现在已集成到 PHP 中,无法单独安装。因此,没有 php8.5-opcache 软件包。

安装服务器 API 并进行集成

对于不与 Web 服务器集成的 PHP 设置(例如,仅使用 CLI 的应用程序或使用 PHP 内置 Web 服务器的应用程序),可以跳过此部分。

将 PHP 与 Web 服务器集成的最常见方法是使用 PHP-FPM 服务器。还有其他方法,例如 Apache mod_php 模块、SwooleFrankenPHP,但本文不涉及这些方法。

安装 PHP-FPM

PHP-FPM 是将 PHP 与 Apache(使用 mpm_event)、Nginx 和 Caddy 等 Web 服务器集成的推荐方法。

php8.5-fpm 软件包会安装 PHP FPM 服务器以及 systemd 单元,以便在服务器启动时自动启动 FPM 服务器。

sudo apt install php8.5-fpm

要检查安装是否成功以及 php-fpm 服务器是否正在运行,请运行以下命令:

sudo systemctl status php8.5-fpm

 

下一篇