SYS-BLOG运行在WordPress上,想安装Popular Posts插件时提示PHP版本不满足需求。在这里介绍将PHP版本从PHP7升级到PHP8的内容。

SYS-BLOG的运行环境如下,这次将PHP版本从7.0.33升级至8.0.23。运行WordPress所需的软件,全部yum进行安装,因此进行编译安装环境的不能使用在这里介绍的方法。

  • 服务器:阿里云ECS
  • OS:CentOS7.7
  • Web:Nginx 1.16.1
  • PHP:7.0.33
  • DB:MariaDB 10.4.12

系统备份

PHP升级过程中可能会出现错误导致系统无法正常使用,因此使用阿里云提供的快照功能进行备份

修改yum repository

使用 yum update命令升级PHP的版本,因此在这里使用 yum-config-manager 命令修改yum repository。

使用 yum repolist 命令确认当前的repository,可确认到当前的使用的为remi-php70。

# yum repolist
~省略~
Loading mirror speeds from cached hostfile
 * remi-php70: mirrors.tuna.tsinghua.edu.cn
 * remi-safe: mirrors.tuna.tsinghua.edu.cn
repo id                                               repo name                                                                                  status
base/7/x86_64                                         CentOS-7                                                                                   10,072
docker-ce-edge/x86_64                                 Docker CE Edge - x86_64                                                                        87
docker-ce-stable/x86_64                               Docker CE Stable - x86_64                                                                     169
epel/x86_64                                           Extra Packages for Enterprise Linux 7 - x86_64                                             13,756
extras/7/x86_64                                       CentOS-7                                                                                      516
mariadb-main/7/x86_64                                 MariaDB Server                                                                                102
mariadb-maxscale/7/x86_64                             MariaDB MaxScale                                                                                4
mariadb-tools/7/x86_64                                MariaDB Tools                                                                                  16
remi-php70                                            Remi's PHP 7.0 RPM repository for Enterprise Linux 7 - x86_64                                 456
remi-safe                                             Safe Remi's RPM repository for Enterprise Linux 7 - x86_64                                  4,954
updates/7/x86_64                                      CentOS-7                                                                                    4,156
repolist: 34,288

接下来安装remi-release repository(如果已安装该步骤可跳过)后,安装yum-utils包。

# yum install remi-release
# yum install yum-utils -y

无效所有的php repository后,激活remi-php80 repository。

# yum-config-manager --disable 'remi-php*'
# yum-config-manager --enable remi-php80

确认remi-php80 repository已被激活。

# yum repolist
~省略~

Loading mirror speeds from cached hostfile
 * remi-php80: mirrors.tuna.tsinghua.edu.cn
 * remi-safe: mirrors.tuna.tsinghua.edu.cn
remi-php80                                                                                                                      | 3.0 kB  00:00:00
remi-php80/primary_db                                                                                                           | 218 kB  00:00:00
repo id                                               repo name                                                                                  status
base/7/x86_64                                         CentOS-7                                                                                   10,072
docker-ce-edge/x86_64                                 Docker CE Edge - x86_64                                                                        87
docker-ce-stable/x86_64                               Docker CE Stable - x86_64                                                                     169
epel/x86_64                                           Extra Packages for Enterprise Linux 7 - x86_64                                             13,756
extras/7/x86_64                                       CentOS-7                                                                                      516
mariadb-main/7/x86_64                                 MariaDB Server                                                                                102
mariadb-maxscale/7/x86_64                             MariaDB MaxScale                                                                                4
mariadb-tools/7/x86_64                                MariaDB Tools                                                                                  16
remi-php80                                            Remi's PHP 8.0 RPM repository for Enterprise Linux 7 - x86_64                                 385
remi-safe                                             Safe Remi's RPM repository for Enterprise Linux 7 - x86_64                                  4,954
updates/7/x86_64                                      CentOS-7                                                                                    4,156
repolist: 34,217

修改yum repository之后,使用 yum update 命令更新到最新Package。

# yum update -y

升级PHP版本

开始升级PHP版本之前,停止Nginx服务。

# systemctl stop nginx

如下yum update 命令指定remi和remi-php80 repository后进行升级。

# yum update --enablerepo=remi,remi-php80 php php-pdo php-mbstring php-common php-cli php-mysql

~省略~
Dependencies Resolved

=======================================================================================================================================================
 Package                               Arch                         Version                                     Repository                        Size
=======================================================================================================================================================
Installing:
 gd3php                                x86_64                       2.3.3-7.el7.remi                            remi                             138 k
     replacing  gd-last.x86_64 2.3.0-1.el7.remi
 php-common                            x86_64                       8.0.23-1.el7.remi                           remi-php80                       1.2 M
     replacing  php-json.x86_64 7.0.33-19.el7.remi
 php-pecl-mcrypt                       x86_64                       1.0.5-1.el7.remi.8.0                        remi-php80                        30 k
     replacing  php-mcrypt.x86_64 7.0.33-19.el7.remi
Updating:
 php                                   x86_64                       8.0.23-1.el7.remi                           remi-php80                       1.8 M
 php-cli                               x86_64                       8.0.23-1.el7.remi                           remi-php80                       5.3 M
 php-mbstring                          x86_64                       8.0.23-1.el7.remi                           remi-php80                       521 k
 php-mysqlnd                           x86_64                       8.0.23-1.el7.remi                           remi-php80                       258 k
 php-pdo                               x86_64                       8.0.23-1.el7.remi                           remi-php80                       151 k
Installing for dependencies:
 libsodium                             x86_64                       1.0.18-1.el7.remi                           remi                             148 k
 libzstd                               x86_64                       1.5.2-1.el7                                 epel                             282 k
 oniguruma5php                         x86_64                       6.9.8-1.el7.remi                            remi                             207 k
 php-sodium                            x86_64                       8.0.23-1.el7.remi                           remi-php80                        92 k
Updating for dependencies:
 libzip5                               x86_64                       1.9.2-3.el7.remi                            remi                              65 k
 php-fpm                               x86_64                       8.0.23-1.el7.remi                           remi-php80                       1.8 M
 php-gd                                x86_64                       8.0.23-1.el7.remi                           remi-php80                        99 k
 php-ldap                              x86_64                       8.0.23-1.el7.remi                           remi-php80                        94 k
 php-opcache                           x86_64                       8.0.23-1.el7.remi                           remi-php80                       765 k
 php-pecl-zip                          x86_64                       1.21.0-3.el7.remi.8.0                       remi-php80                        68 k
 php-xml                               x86_64                       8.0.23-1.el7.remi                           remi-php80                       232 k

Transaction Summary
=======================================================================================================================================================
Install  3 Packages (+4 Dependent packages)
Upgrade  5 Packages (+7 Dependent packages)

确认即将安装PHP版本是否正确,如果没问题的话,输入「y」。

Total download size: 13 M
Is this ok [y/d/N]:y

~省略~
Installed:
  gd3php.x86_64 0:2.3.3-7.el7.remi            php-common.x86_64 0:8.0.23-1.el7.remi            php-pecl-mcrypt.x86_64 0:1.0.5-1.el7.remi.8.0

Dependency Installed:
  libsodium.x86_64 0:1.0.18-1.el7.remi  libzstd.x86_64 0:1.5.2-1.el7  oniguruma5php.x86_64 0:6.9.8-1.el7.remi  php-sodium.x86_64 0:8.0.23-1.el7.remi

Updated:
  php.x86_64 0:8.0.23-1.el7.remi     php-cli.x86_64 0:8.0.23-1.el7.remi php-mbstring.x86_64 0:8.0.23-1.el7.remi php-mysqlnd.x86_64 0:8.0.23-1.el7.remi
  php-pdo.x86_64 0:8.0.23-1.el7.remi

Dependency Updated:
  libzip5.x86_64 0:1.9.2-3.el7.remi             php-fpm.x86_64 0:8.0.23-1.el7.remi               php-gd.x86_64 0:8.0.23-1.el7.remi
  php-ldap.x86_64 0:8.0.23-1.el7.remi           php-opcache.x86_64 0:8.0.23-1.el7.remi           php-pecl-zip.x86_64 0:1.21.0-3.el7.remi.8.0
  php-xml.x86_64 0:8.0.23-1.el7.remi

Replaced:
  gd-last.x86_64 0:2.3.0-1.el7.remi              php-json.x86_64 0:7.0.33-19.el7.remi              php-mcrypt.x86_64 0:7.0.33-19.el7.remi

Complete!

最后显示「Complete!」,表示PHP版本升级成功。

确认升级后的PHP版本

使用 php -v 命令确认当前的PHP版本。

# php -v

执行后的显示结果如下,可确认到当前的版本为 8.0.23。

PHP 8.0.23 (cli) (built: Aug 30 2022 12:16:34) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.23, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.23, Copyright (c), by Zend Technologies

动作确认

升级完PHP版本之后,systemctl命令启动nginx访问网站是否能够正常访问。

# systemctl start nginx

并且需要确认已安装的WordPress插件是否正常运行,因为WordPress插件的运行也依赖于PHP版本。

小结

因为需要安装Popular Posts插件升级了WordPress环境的PHP版本,而PHP8的性能表现也是强于PHP7。最重要的是yum升级PHP的版本,虽然有一定的风险但操作相对简单。