如何安装/更新PHP 8.0(Debian / Ubuntu)

原文英文参考链接#

PHP 8.0 带来了一些新功能,并在性能,语法,安全性和稳定性方面进行了改进。使用当前所有受支持的 Debian 和 Ubuntu 版本中可用的预编译软件包,可以轻松地在几乎任何类型的服务器 / 开发设置上安装 PHP 8.0。

#

尽管进行了大量更改,但是 PHP 8.0 的依存关系和扩展结构没有太多更改。

  1. JSON 扩展现在始终可用,并且没有编译标志可将其排除。这意味着不再需要显式安装 php-json 软件包。
  2. xmlrpc有充分的理由将扩展名移至 PECL。这篇文章中提到的软件存储库不包括 xmlrpcPHP 8.0 的扩展。

此外,GD 扩展名在 Windows 中已从更改 php_gd2.dllphp_gd.dll,将在单独的文章中介绍。

PHP 8.0 中的 INI 更改#

INI 文件也很少更改。

  1. 断言默认情况下引发异常 -(assert.exception=1
  2. 默认错误显示设置为 E_ALL-(error_reporting=-1
  3. 默认显示启动错误 -(display_startup_errors=1

由于 PHP 8.0 的新功能和更改,

通过 OndřejSurý 的努力,可以轻松地在 Ubuntu 和 Debian 上安装 PHP 8.0。他维护着一个 PHP PPA,其中包含 PHP 8.0 和几个流行的 PECL 扩展,这些扩展可随时安装在任何当前的 Debian / Ubuntu 系统上。


1. 列出现有的 PHP 软件包#

如果要从现有的 PHP 版本更新到 8.0,则获取现有的 PHP 软件包列表很重要。尽管扩展名稍有更改,但安装 PHP 8.0 对应软件包是确保升级顺利并涵盖与当前 PHP 版本相同的软件包的最简单方法。

dpkg -l | grep php | tee packages.txt

此命令将列出所有包含 name 的软件包 php,并将其写入名为的文件中 packages.txt,该文件可以随时引用。

2. 添加 ondrej/phpPPA#

的 Ubuntu

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

德比安

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

上面的步骤会将 PPA 添加为软件包的来源,其中包含所有 PHP 软件包及其依赖项,例如 argon2libzip

3. 安装 PHP 8.0 和扩展#

所有 PHP 8.0 软件包都遵循 php8.0-NAME 模式,并且 php8.0-common 软件包包括一组明智的默认扩展名(例如 `php8.0-)。

使用 CLI 安装 PHP 8.0#

sudo apt install php8.0-common php8.0-cli -y

该命令将安装多个由于导致的 PHP 扩展 php8.0-common 以及用于 PHP 8.0 的 CLI。

您可以通过运行以下命令确认安装:

php -v # Show PHP version.
php -m # Show PHP modules loaded.

其他扩展#

您可以从同一 php8.0-NAME 模式安装其他扩展。packages.txt 如果要升级现有系统,请参考该文件以查看现有软件包的列表。

请注意,您不需要安装,php8.0-json 因为默认情况下现在已包含它。

安装更多有用扩展的示例:

sudo apt install php8.0-{bz2,curl,intl,mysql,readline,xml}

对于开发环境,也可以安装代码覆盖率工具或 Xdebug 调试器。

sudo apt install php8.0-pcov # PCOV code coverage tool
sudo apt install php8.0-xdebug # Xdebug debugger

安装服务器 API#

根据您使用的 Web 服务器,您将需要安装其他软件包才能与 Web 服务器集成。

对于使用 mpm_eventNginxLitespeed 等的 Apache,该 php8.0-fpm 软件包通过 FPM 提供了与 PHP 8.0 的集成。

sudo apt install php8.0-fpm

对于 Apache 使用 mod_php,请安装 libapache2-mod-php8.0

sudo apt install libapache2-mod-php8.0

注意,Apache2Handler 在 PHP 8.0 中被重命名为 php_modulefromphp7_module。该 libapache2-mod-php8.0 软件包会自动配置 Apache 模块的位置,但是,如果您要从现有的 PHP 设置进行更新,则可能需要更新配置文件;在特别的 <IfModule> 街区。

4. 测试 PHP 8.0 的安装#

要测试 PHP 安装和扩展,请运行以下命令:

php -v
php -m
# php -v
PHP 8.0.0-dev (cli) (built: Oct 4 2020 14:04:36) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies

# php -m
[PHP Modules]
Core
ctype
curl
...

清除旧的 PHP 版本#

如果新安装按预期工作,则可以从系统中删除旧的 PHP 软件包。

sudo apt purge '^php7.4.*'

假设您使用 PHP 7.4 作为以前的版本。php7.4 使用适当的 PHP 版本更改上述命令的一部分。

使用其他版本运行 PHP 8.0#

除了删除旧的 PHP 版本之外,还可以并行运行多个 PHP 版本。

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

update-alternatives 命令提供了一种在 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.0 80 auto mode
1 /usr/bin/php7.4 74 manual mode
2 /usr/bin/php8.0 80 manual mode

Press to keep the current choice[*], or type selection number:

要设置没有交互提示的路径:

update-alternatives --set php /usr/bin/php7.4

PHP 8.0 中的新增功能和更改#

有关 PHP 8.0 中更改的完整列表,请参见 PHP 8.0 中的新增功能和更改。

php
本作品采用《CC 协议》,转载必须注明作者和本文链接