在 Debian 和 Ubuntu 上安装和升级到 PHP 8.5

AI 概述
文章介绍在 Debian、Ubuntu 及其衍生版上使用 Ondřej Surý 维护的仓库安装 PHP 8.5 的方法。先说明 PHP 8.5 有向后兼容性中断情况,强调备份重要性。接着详细步骤包括记录现有 PHP 包,添加仓库(分 Ubuntu PPA 和 Debian DPA 两种情况),安装 PHP 8.5 CLI、扩展、服务器 API 并集成,迁移配置,还可移除旧版本或与其他版本并行运行。
目录
文章目录隐藏
  1. PHP 8.5 中的向后兼容性中断
  2. 1. 记录现有的 PHP 包
  3. 2. 添加 ondrej/php PPA/DPA
  4. 3. 安装新的 PHP 8.5 包
  5. 安装服务器 API 并集成
  6. 额外的 PHP 扩展
  7. 迁移配置
  8. 移除旧的 PHP 版本
  9. 与其他 PHP 版本并行运行 PHP 8.5
  10. 快速摘要

在 Debian 和 Ubuntu 上安装和升级到 PHP 8.5

PHP 8.5 支持 Pipe 语法、新 URI 扩展,以及大量弃用和性能改进,是一个经过良好打磨的 PHP 版本,现在已正式发布。

设置 Ubuntu 或 Debian 服务器,或从之前的 PHP 版本升级,是一个快速的过程,本指南旨在详细解释,包括注意事项列表。

本指南适用于 Debian、Ubuntu 及其衍生版,解释如何使用预编译二进制文件安装 PHP 8.5。

一旦安装完成,可以使用 apt update 轻松应用 bug 修复和安全修复。本文其余部分使用由 Ondřej Surý 维护的 PHP APT 仓库。Ondřej 的 PHP 仓库多年来一直是 Ubuntu、Debian 及其衍生版上 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 添加了两个新的核心扩展,名为 uri 和 lexbor。它们也是总是包含的。
  • PHP 8.5 引入了一个新的 max_memory_limit INI 指令,用于将 memory_limit 值限制为 max_memory_limit 设置的最高值。此新指令默认禁用。
  • php -z CLI 选项 已被移除。它已经一段时间不起作用,并且有一个跨版本兼容的替代方案。
  • disable_classes INI 指令已被移除。

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

PHP 8.5 将获得总共四年的安全更新,其中前两年还将包括 bug 修复。

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 列出使用 dpkg(apt 使用的)安装的所有包。以下命令列出所有这些包,过滤仅包含 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
# 按回车确认。
sudo apt update

Debian DPA

sudo apt-get update
sudo apt-get -y install lsb-release ca-certificates curl apt-transport-https
# 下载并添加签名密钥
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 包只需运行带有 PHP 8.5 包名的 apt install

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

安装 PHP CLI

sudo apt install php8.5-cli

这会安装 PHP 8.5 CLI 可执行文件及其依赖项。要测试安装是否正确,使用 php -v 测试。

php -v

这应该输出 PHP 版本以及可选构建提供者和版权信息。

PHP 8.5 php -v 输出

安装 PHP 扩展

额外的 PHP 扩展如 mbstringcurlintlreadline 可以通过安装带有 php8.5- 前缀的包来安装。例如,要安装 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 扩展现在总是捆绑的,不能单独安装。因此,没有 php8.5-opcache 包。

安装服务器 API 并集成

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

将 PHP 与 Web 服务器集成的常见方式是通过 PHP-FPM 服务器集成。有其他方法,如 Apache 的 mod_php 模块、Swoole 和 FrankenPHP,本文不涵盖这些。

安装 PHP-FPM

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

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

sudo apt install php8.5-fpm

要检查安装并确认 php-fpm 服务器正在运行,请运行以下命令:

sudo systemctl status php8.5-fpm

它应该显示 FPM 服务器正在运行:

PHP 8.5 php8.5-fpm 服务状态

与 Web 服务器集成

Apache:通过启用 PHP 8.5 配置文件来简化此配置更改:

sudo a2enconf php8.5-fpm

Nginx:将 fastcgi_pass 指令从旧的 PHP FPM 套接字路径更新为新的 PHP 8.5 路径:

fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_pass unix:/run/php/php8.5-fpm.sock;

Caddy Server:将 reverse_proxy 指令更新为使用新的 PHP 8.5 FPM 服务器套接字路径:

reverse_proxy @phpFiles unix//run/php/php8.4-fpm.sock
reverse_proxy @phpFiles unix//run/php/php8.5-fpm.sock

有关更多配置细节,请参阅 如何使用 Caddy Server 与 PHP :https://php.watch/articles/caddy-php。

额外的 PHP 扩展

如果需要额外的扩展,它们也可能在仓库中以 php8.5- 前缀可用。

开发工具

调试和性能分析工具,如 Xdebug 和代码覆盖工具,也可以按照相同的包命名约定安装。

不推荐在生产服务器上安装 Xdebug 或其他开发扩展,除非绝对必要。

Xdebug

sudo apt install php8.5-xdebug

PCOV

sudo apt install php8.5-pcov

迁移配置

安装完成后,新 PHP 设置的配置文件将在 /etc/php/8.5 目录中。现有的 PHP 安装可能安装在 /etc/php/VERSION 目录中。

如果需要,可以从较旧的 PHP 版本复制配置。不推荐覆盖现有文件。相反,请考虑比较两个 php.ini 文件之间的差异,并更新相应的 PHP 8.5 php.ini 文件。

例如,以下命令将 PHP 8.5 CLI php.ini 与 PHP 8.5 的进行比较:

diff /etc/php/8.4/cli/php.ini /etc/php/8.5/cli/php.ini

使用 PHP-FPM 时,请确保更新 /etc/php/8.5/fpm/pool.d/www.conf 文件以匹配较旧的 PHP-FPM 运行器池配置。

PHP 模块可以使用 phpenmod 和 phpdismod 命令安装和禁用:

例如,以下命令在 PHP 8.5 上启用和禁用 zip 扩展:

phpdismod -v 8.5 zip
phpenmod -v 8.5 zip

移除旧的 PHP 版本

一旦确认新 PHP 设置正常工作,就可以移除不再需要的旧 PHP 版本的包和服务。

sudo apt purge '^php8.4.*'

上面的示例显示了一个 apt purge 命令,使用通配符匹配所有 PHP 8.4 包。

与其他 PHP 版本并行运行 PHP 8.5

如果需要,以上步骤中提到的 PHP 8.5 安装可以与其他 PHP 版本共存。

安装 PHP 8.5 CLI 时,它将安装在 /usr/bin/php8.5。其他 PHP 版本将安装在相同位置,但带有版本名称后缀(例如,PHP 8.4 在 /usr/bin/php8.4)。可以通过直接调用此路径来调用其他 PHP CLI 版本。

默认的 php 命令名称将默认链接到最新 PHP 版本。但是,使用 update-alternatives 命令,可以将其更改为任何其他 PHP 版本:

sudo update-alternatives --config php

这会打开一个交互界面,选择 php 指向的替代 PHP 二进制路径:

There are 2 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php8.5   85        auto mode
  1            /usr/bin/php8.4   84        manual mode
  2            /usr/bin/php8.5   85        manual mode

要不使用交互提示设置路径:

update-alternatives --set php /usr/bin/php8.5

快速摘要

1. 添加 PHP 8.5 源

对于 Ubuntu:

sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
# 按回车确认。
sudo apt update

对于 Debian:

sudo apt-get update
sudo apt-get -y install lsb-release ca-certificates curl apt-transport-https
# 下载并添加签名密钥
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

2. 安装新的 PHP 8.5 包

sudo apt install php8.5-cli
# 根据需要调整扩展列表
sudo apt install php8.5-common php8.5-{bcmath,bz2,curl,gd,gmp,intl,mbstring,openssl,readline,xml,zip}

以上关于在 Debian 和 Ubuntu 上安装和升级到 PHP 8.5的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

1

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 在 Debian 和 Ubuntu 上安装和升级到 PHP 8.5

发表回复