PHP 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 不包含任何影响安装或升级过程的显著更改。PHP 8.2 确实添加了一个名为 random 的新扩展,但这个扩展始终是一个捆绑的扩展,没有它就无法编译 PHP。
PHP 的 INI 设置和文件的一个显着变化是 PHP 8.2 对格式错误的 INI 设置发出警告,这些设置在旧 PHP 版本中被静音。有关更多信息,请参阅 PHP 8.2:INI 解析警告。
在安装/升级到 PHP 8.2 的命令行命令下方,有关详细步骤,请转到详细安装/升级指南
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*
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*
以下命令列出当前系统上存在的所有与 PHP 相关的软件包,并将它们保存到名为 packages.txt 的文本文件中。这有助于在 PHP 8.2 上重建相同的软件包列表。
在全新安装中,此步骤不是必需的。
dpkg -l | grep php | tee packages.txt
Ondřej Surý 维护的存储库包含主要的 PHP 软件包,并保持更新。
将此存储库添加到系统的软件源列表中后,可以使用标准 apt
命令完成初始安装和更新。
sudo add-apt-repository ppa:ondrej/php # Press enter when prompted.
sudo apt update
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
在步骤 #2 中添加的存储库中可用的所有 PHP 8.2 软件包都遵循 php8.2-
命名模式。PHP 中的捆绑扩展,如 json
、 ctype
、date
、random
等不需要手动安装。
该 php8.2-common
软件包包括几个常见的PHP软件包。以后可以有选择地禁用不必要的扩展。
sudo apt install php8.2 php8.2-cli php8.2-{curl,bz2,mbstring,intl}
展开上面的大括号以包括新系统上所需的所有扩展名。升级现有 PHP 安装程序时,在步骤 #1 中创建 packages.txt
的文件应列出所有当前的 PHP 包。
在 Web 服务器与 PHP 集成的系统上,安装其他服务器 API 包。以下是最流行的组合的一些示例:
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 模块,除非边缘用例需要它。
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
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;
要测试 PHP CLI 安装,请尝试运行以下命令:
php -v
php -m
输出应显示 PHP 8.2,以及已启用的 PHP 扩展列表。
要测试 Web 服务器集成,请尝试通过 Web 服务器运行 PHP 文件。
以下命令将删除较旧的 PHP 版本。建议在验证 PHP 8.2 安装正常工作之前不要删除它们。
sudo apt purge php8.1* # Change "php8.1" with the old PHP version names.
这也会删除要删除的包的配置文件。
没有必要全局安装 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