在 Ubuntu 20.04 上使用 Apache 从 PHP 7 升级到 PHP 8

介绍

本指南将向您展示如何在 Apache Web 服务器上从 PHP 7.x 迁移到 PHP 8。 检查 迁移指南 用于新功能和不兼容的更改。

先决条件

一个完全更新的 Ubuntu Linux 20.04 服务器,运行 Apache。

在继续之前,建议备份您的服务器。 然后,通过从备份部署新实例来测试备份,然后验证测试实例是否启动并具有正确的数据。 如果在继续之前不进行备份,则可能会丢失数据。

1. 列出已安装的 PHP 模块

在升级 PHP 之前,找到服务器上当前安装的所有 PHP 7.x 模块。 这些将需要与 PHP 核心一起升级到各自的 8 版本。

记下当前PHP安装的版本号; 这将在以后需要。

$ dpkg -l | grep php

Output:
php-common                                  install
php7.x-cli                                  install
php7.x-curl                                 install
[...]

2. 安装 PHP 8

Ubuntu 的官方存储库中可能还没有 PHP 8 版,您可以从 ondrej/php 存储库,一个长期且社区信任的 Ubuntu PHP 包存储库。

添加必要的存储库。

$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt update

安装 PHP 8。

$ sudo apt install php8.0

3. 安装模块

安装相关的PHP模块; 下面是一些最常用的。 请返回到步骤 1 并手动安装缺少的任何必要模块,替换 7.x8.0.

$ sudo apt install php8.0-common php8.0-fpm php8.0-mysql php8.0-gmp php8.0-xml php8.0-xmlrpc php8.0-curl php8.0-mbstring php8.0-gd php8.0-dev php8.0-imap php8.0-opcache php8.0-readline php8.0-soap php8.0-zip php8.0-intl php8.0-cli libapache2-mod-php8.0

完成后,重启PHP

$ sudo systemctl restart php8.0-fpm.service

验证 PHP 已正确安装。

$ php -v

3. 在 Apache 中启用 PHP 8

a2enmoda2dismod 脚本可用于在 Apache 中启用和禁用 PHP 版本。

禁用以前安装的 PHP 版本。 代替 7.x 使用步骤 1 中注明的版本号。

$ sudo a2dismod php7.x

启用 PHP 8。

$ sudo a2enmod php8.0

重新启动 Apache Web 服务器。

$ sudo systemctl restart apache2.service

4. 验证 Apache 是否使用 PHP 8

导航到服务器上网站的文档根目录。 对于这个例子,文档根是 /var/www/html.

$ cd /var/www/html

创建一个 PHP 文件。

$ sudo nano phpinfo.php

将以下内容添加到文件中。

<?php
  phpinfo();
?>

打开浏览器并访问该文件 http://[ip-address]/phpinfo.php 要么 http://[domain]/phpinfo.php 并验证它显示正确的 PHP 版本。

记得删除 phpinfo.php 完成后以防止暴露有关您的服务器的敏感信息。

结论

您现在已经在 Apache Web 服务器上成功地从 PHP 7.x 迁移到 PHP 8。

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com