如何在 Debian 和 Ubuntu 系统上安装/升级 PHP 8.2

如何在 Debian 和 Ubuntu 系统上安装/升级 PHP 8.2PHP 8.2 带来了主要的新功能,如只读类、新 random 扩展、敏感参数编辑以及语言简化更改,包括弃用动态属性和与字符串内插相关的弃用。

目前,在 Debian 或 Ubuntu 的默认软件仓库中不提供 PHP 8.2 软件包,但 PHP 8.2 软件包可从 Ondřej Surý 维护的仓库中获得。Ondrej的存储库是主要和最新的存储库,提供PHP包和PECL扩展到基于Debian和Ubuntu的操作系统,并用于所有PHP。观看有关在这些系统上安装 PHP 的指南。

PHP 8.2 中的新增功能和更改内容

PHP 8.2 带来了一系列健康的安全性和性能新功能,以及一些弃用,这些弃用可能会在现有遗留系统上发出额外的警告,因为它弃用了动态属性,以及其他一些弃用。

有关 PHP 8.2 中的新增功能和更改的完整列表,请参阅 PHP 8.2:新增功能和更改内容

显著的扩展和 INI 更改

PHP 8.2 不包含任何影响安装或升级过程的显著更改。PHP 8.2 确实添加了一个名为 random 的新扩展,但这个扩展始终是一个捆绑的扩展,没有它就无法编译 PHP。

PHP 的 INI 设置和文件的一个显着变化是 PHP 8.2 对格式错误的 INI 设置发出警告,这些设置在旧 PHP 版本中被静音。有关更多信息,请参阅 PHP 8.2:INI 解析警告。

快速入门

在安装/升级到 PHP 8.2 的命令行命令下方,有关详细步骤,请转到详细安装/升级指南

Ubuntu

sudo dpkg -l | grep php | tee packages.txt
sudo add-apt-repository ppa:ondrej/php # Press enter when prompted.
sudo apt update
sudo apt install php8.2 php8.2-cli php-8.2{bz2,curl,mbstring,intl}

sudo apt install php8.2-fpm
# OR
# sudo apt install libapache2-mod-php8.2

sudo a2enconf php8.2-fpm

# When upgrading from older PHP version:
sudo a2disconf php8.1-fpm

## Remove old packages
sudo apt purge php8.1*

Debian

sudo dpkg -l | grep php | tee packages.txt

sudo apt install apt-transport-https lsb-release ca-certificates wget -y
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg 
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt update

# Expand the curly braces with all extensions necessary.
sudo apt install php8.2 php8.2-cli php8.2-{bz2,curl,mbstring,intl}

sudo apt install php8.2-fpm
# OR
# sudo apt install libapache2-mod-php8.2

sudo a2enconf php8.2-fpm

# When upgrading from older PHP version:
sudo a2disconf php8.1-fpm

## Remove old packages
sudo apt purge php8.1*

详细指南

1. 列出并存储 PHP 扩展列表

以下命令列出当前系统上存在的所有与 PHP 相关的软件包,并将它们保存到名为 packages.txt 的文本文件中。这有助于在 PHP 8.2 上重建相同的软件包列表。

在全新安装中,此步骤不是必需的。

dpkg -l | grep php | tee packages.txt

2. 添加 ondrej/php PPA 作为软件存储库

Ondřej Surý 维护的存储库包含主要的 PHP 软件包,并保持更新。

将此存储库添加到系统的软件源列表中后,可以使用标准 apt 命令完成初始安装和更新。

Ubuntu LTS Versions Ubuntu LTS 版本

sudo add-apt-repository ppa:ondrej/php # Press enter when prompted.
sudo apt update

Debian

sudo apt install apt-transport-https lsb-release ca-certificates 
software-properties-common
sudo add-apt-repository ppa:ondrej/php # Press enter when prompted.
sudo apt update

3. 安装 PHP 8.2 和扩展

在步骤 #2 中添加的存储库中可用的所有 PHP 8.2 软件包都遵循 php8.2- 命名模式。PHP 中的捆绑扩展,如 jsonctypedaterandom 等不需要手动安装。

php8.2-common 软件包包括几个常见的PHP软件包。以后可以有选择地禁用不必要的扩展。

sudo apt install php8.2 php8.2-cli php8.2-{curl,bz2,mbstring,intl}

展开上面的大括号以包括新系统上所需的所有扩展名。升级现有 PHP 安装程序时,在步骤 #1 中创建 packages.txt 的文件应列出所有当前的 PHP 包。

4. 安装并启用服务器 API

在 Web 服务器与 PHP 集成的系统上,安装其他服务器 API 包。以下是最流行的组合的一些示例:

带有 PHP-FPM 的 Apache Web 服务器

sudo apt install php8.2-fpm
sudo a2enconf php8.2-fpm
sudo a2disconf php8.1-fpm # When upgrading from an older PHP version
sudo service apache2 restart

使用 PHP 作为 Apache 模块的 Apache Web 服务器

不建议将 PHP 安装为 Apache 模块,除非边缘用例需要它。

sudo apt install libapache2-mod-php8.2
sudo a2enmod php8.2
sudo a2dismod php8.1 # When upgrading from an older PHP version
sudo service apache2 restart

带有PHP-FPM的Nginx Web服务器

sudo apt install php8.2-fpm
sudo service nginx restart

然后,编辑相关的 Nginx 配置文件以指向新的 PHP 套接字 at fastcgi_pass 指令:

// fastcgi_pass unix:/run/php/php8.1-fpm.sock;
// 要进行替换操作
fastcgi_pass unix:/run/php/php8.2-fpm.sock;

5. 测试 PHP 8.2 安装

要测试 PHP CLI 安装,请尝试运行以下命令:

php -v
php -m

输出应显示 PHP 8.2,以及已启用的 PHP 扩展列表。

要测试 Web 服务器集成,请尝试通过 Web 服务器运行 PHP 文件。

6. 清除旧的 PHP 软件包

以下命令将删除较旧的 PHP 版本。建议在验证 PHP 8.2 安装正常工作之前不要删除它们。

sudo apt purge php8.1* # Change "php8.1" with the old PHP version names.

这也会删除要删除的包的配置文件。

与其他版本一起运行多个 PHP 8.2

没有必要全局安装 PHP 8.2,并删除旧的 PHP 版本,因为可以在同一台服务器上同时运行多个 PHP 版本。

PHP 8.2 CLI 将默认安装在 /usr/bin/php8.2 某个位置,但会链接 同样,其他 PHP 二进制文件将位于同一目录( /usr/bin/php8.0/usr/bin/php7.4  等)。默认情况下,默认 php 名称将符号链接到最新的 PHP 版本,但可以更改默认 php 命令链接到的位置。

如果 update-alternatives 有多个 PHP 版本链接到同一 php 路径,则该命令提供了一种在 PHP CLI 的 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.2   82        auto mode
  1            /usr/bin/php8.1   81        manual mode
  2            /usr/bin/php8.2   82        manual mode

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

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


原文始发于微信公众号(开源技术小栈):如何在 Debian 和 Ubuntu 系统上安装/升级 PHP 8.2

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/248326.html

(0)
李, 若俞的头像李, 若俞

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!