CentOS Stream8のPHPをPHP8.2にバージョンアップしてみる

2022/11/24はPHP8.2のリリース予定日だったなと思い出し、検証用サーバに導入してみました。
実はPHP8.2RC7と正式リリース前でしたが、手順は変わらないのでこのまま進めます。

検証環境
before after
OS CentOS Stream 8
PHP 8.1.13 8.2.0RC7
WordPress 6.1.1

remiリポジトリからPHP8.1を導入済です。標準レポジトリの場合は7.2~8.0までの対応です。
remiレポジトリの導入はこの2行で行けると思います。

# dnf install epel-release -y
# dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
PHP8.1で事前確認

前回と同じ手順で比較のためのデータを取っておきます。
PHP8.1バージョンアップ直後のRequests per secondは78.07/secだったので速度低下していますね。ハードウェアは変更していないのでWordPressのメジャーバージョンアップが原因かな。

# php -v
PHP 8.1.13 (cli) (built: Nov 22 2022 14:42:07) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.13, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.13, Copyright (c), by Zend Technologies

# ab -c 1000 -n 1000 https://192.0.2.128/

Requests per second:    72.28 [#/sec] (mean)
Time per request:       13835.524 [ms] (mean)
Time per request:       13.836 [ms] (mean, across all concurrent requests)
Transfer rate:          1877.24 [Kbytes/sec] received

# dnf list installed |grep php
gd3php.x86_64                         2.3.3-8.el8.remi                           @remi
oniguruma5php.x86_64                  6.9.8-1.el8.remi                           @remi
php-cli.x86_64                        8.1.13-1.el8.remi                          @remi-modular
php-common.x86_64                     8.1.13-1.el8.remi                          @remi-modular
php-fpm.x86_64                        8.1.13-1.el8.remi                          @remi-modular
php-gd.x86_64                         8.1.13-1.el8.remi                          @remi-modular
php-mbstring.x86_64                   8.1.13-1.el8.remi                          @remi-modular
php-mysqlnd.x86_64                    8.1.13-1.el8.remi                          @remi-modular
php-opcache.x86_64                    8.1.13-1.el8.remi                          @remi-modular
php-pdo.x86_64                        8.1.13-1.el8.remi                          @remi-modular
php-pecl-apcu.x86_64                  5.1.22-1.el8.remi.8.1                      @remi-modular
php-xml.x86_64                        8.1.13-1.el8.remi                          @remi-modular
PHP8.2へアップデート開始

では早速アップデートしてみます。これも基本的な流れは前回と同じです。

# dnf module list php
CentOS Stream 8 - AppStream
Name          Stream               Profiles                           Summary
php           7.2 [d]              common [d], devel, minimal         PHP scripting language
php           7.3                  common [d], devel, minimal         PHP scripting language
php           7.4                  common [d], devel, minimal         PHP scripting language
php           8.0                  common [d], devel, minimal         PHP scripting language

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name          Stream               Profiles                           Summary
php           remi-7.2             common [d], devel, minimal         PHP scripting language
php           remi-7.3             common [d], devel, minimal         PHP scripting language
php           remi-7.4             common [d], devel, minimal         PHP scripting language
php           remi-8.0             common [d], devel, minimal         PHP scripting language
php           remi-8.1 [e]         common [d], devel, minimal         PHP scripting language
php           remi-8.2             common [d], devel, minimal         PHP scripting language

remi-8.2の行があるので更新できます。それとCentOS Stream 8の標準レポジトリにもPHP8.0が来てるんですね。

ということでモジュールをremi-8.2に切り替えてdnf updateを行います。

# dnf module enable php:remi-8.2
====================================================================================================
 パッケージ             アーキテクチャー      バージョン               リポジトリー           サイズ
====================================================================================================
モジュールストリームの有効化中:
 php                                          remi-8.2

トランザクションの概要
====================================================================================================

これでよろしいですか? [y/N]: y
完了しました!


# dnf update php*

アップグレード済み:
  php-8.2.0~RC7-8.el8.remi.x86_64                 php-cli-8.2.0~RC7-8.el8.remi.x86_64
  php-common-8.2.0~RC7-8.el8.remi.x86_64          php-fpm-8.2.0~RC7-8.el8.remi.x86_64
  php-gd-8.2.0~RC7-8.el8.remi.x86_64              php-mbstring-8.2.0~RC7-8.el8.remi.x86_64
  php-mysqlnd-8.2.0~RC7-8.el8.remi.x86_64         php-opcache-8.2.0~RC7-8.el8.remi.x86_64
  php-pdo-8.2.0~RC7-8.el8.remi.x86_64             php-pecl-zip-1.21.1-1.el8.remi.8.2.x86_64
  php-sodium-8.2.0~RC7-8.el8.remi.x86_64          php-xml-8.2.0~RC7-8.el8.remi.x86_64

完了しました!

完了後のお約束。php-fpmを再起動しなくても自動で切り替わってくれました。

# php -v
PHP 8.2.0RC7 (cli) (built: Nov 22 2022 18:07:40) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.0RC7, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.0RC7, Copyright (c), by Zend Technologies
PHP8.2の速度を確認

現時点の最新WordPress6.1.1とPHP8.2(RC7)でエラーは特にでていないようです。ただしWordPressのWP_DEBUGPHPをtrueに変更すると大量のDeprecatedが記録されています。まあPHP8.1にも完全対応はできていないので出て当然ですね。

なのでApacheBenchの速度比較だけ行います。

# ab -c 1000 -n 1000 https://192.0.2.128/

Requests per second:    76.31 [#/sec] (mean)
Time per request:       13104.110 [ms] (mean)
Time per request:       13.104 [ms] (mean, across all concurrent requests)
Transfer rate:          1982.17 [Kbytes/sec] received

8.1.13→8.2.0RC7で5%ほど速度アップしています。まだ速くなるのかPHP!?

ApacheBench
ab -c 1000 -n 1000
PHP
8.1.13
PHP
8.2.0RC7
Requests per second 72.28/sec 76.31/sec
Time per request 13.836ms 13.104ms

ということでPHP8.2はまだRC7ではあるもののWordPress6.1系で大きな問題はなく、僅かな速度向上を確認できました。

関連記事のピックアップ
CentOS8のPHP8.0をPHP8.1に切り替えてみる
PHP8.1が正式リリースされていたのをすっかり忘れていました。今回は8.0から一部処理の速度が上がっているらしいですね。Word...
PHP8.0→8.1の高速化を確認
前回に引き続きPHP8.1へのアップデートの効果を確かめてみることにします。