4

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

 1 year ago
source link: https://blog.p2hp.com/archives/9972
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
如何在 Debian、Ubuntu 和其他基于 Ubuntu 的系统上安装 PHP 8.2

PHP 8.2带来了主要的新特性,例如只读类、新random扩展敏感参数编辑以及语言简化更改,包括动态属性的弃用和字符串插值相关的弃用。

注意:PHP 8.2 尚未达到 GA 版本,但
PHP 8.2 计划于 11 月 24 日发布。当第一个稳定的 PHP 8.2 版本发布时,此通知将被删除。在此之前,本指南的其余部分将安装 PHP 8.2 的最新候选版本。对于生产服务器,建议等到 GA 发布。

目前,Debian 或 Ubuntu 的默认软件存储库中不提供 PHP 8.2 软件包,但可以从Ondřej Surý维护的存储库中获得 PHP 8.2 软件包。Ondrej 的存储库是主要和最新的存储库,为基于 Debian 和 Ubuntu 的操作系统提供 PHP 包和 PECL 扩展,并用于所有 PHP.Watch 指南,用于在这些系统上安装 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 解析警告


注意:未来潜在的破坏性行动

以下操作以sudo 执行,并且需要该级别的权限才能继续。进行任何系统范围的更改时的常见警告也适用于此处。确保备份系统并在继续之前检查备份。


在安装/升级到 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
# 或
# sudo apt install libapache2-mod-php8.2

sudo a2enconf php8.2-fpm

# 当从老的PHP版本升级:
sudo a2disconf php8.1-fpm

## 删除旧包
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,php-8.2{bz2,curl,mbstring,intl}

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

sudo a2enconf php8.2-fpm

# 当从老的PHP版本升级:
sudo a2disconf php8.1-fpm

## 删除旧包
sudo apt purge php8.1*

详细指南

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

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

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

dpkg -l | grep php | tee packages.txt

2. 添加ondrej/phpPPA 作为软件存储库。

Ondřej Surý维护的存储库包含主要的 PHP 包,并不断更新。

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

Ubuntu LTS 版本

sudo add-apt-repository ppa:ondrej/php # 出现提示时按回车键.
sudo apt update

Debian

sudo apt install apt-transport-https lsb-release ca-certificates ```
software-properties-common
sudo add-apt-repository ppa:ondrej/php # 出现提示时按回车键.
sudo apt update

3. 安装 PHP 8.2 和扩展

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

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

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

展开上面的花括号以包含新系统上所需的所有扩展。升级现有 PHP 设置时,packages.txt在步骤 #1 中创建的文件应列出所有当前 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 # 从较旧的 PHP 版本升级时
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 # 从较旧的 PHP 版本升级时
sudo service apache2 restart

带有 PHP-FPM 的 Nginx Web 服务器

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

然后,编辑相关的 Nginx 配置文件以指向新的 PHP 套接字 atfastcgi_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




About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK