【RHEL9】リポジトリ標準のphpバージョンを変更する

# 概要
RHEL9からはリポジトリ標準のphpのバージョンを変更できる。
割とよくやる作業だけどやり方が覚えられないので備忘録。

## 環境

- OS : Miracle Linux 9.2
- phpバージョン: 8.0 → 8.1

## ポイント

- dnf moduleを利用します
- 既存のphpをアンインストールすることなくシームレスにバージョンアップが可能です
    - ただし設定ファイルは再設定が必要

## 手順

### 現状のphpバージョンの確認

まず現行のバージョンを確認しておく。今回の場合php8.0.30です。

```console
# php -v
PHP 8.0.30 (cli) (built: Aug  3 2023 17:13:08) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.30, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.30, Copyright (c), by Zend Technologies
```

### 切り替え可能なphpバージョンの確認

```dnf module```コマンドで切り替え可能なphpバージョンを確認します。
今回は8.1のみですが、remiリポジトリなどを読み込んでいれば他のバージョンも候補に上がってくるはずです。

```console
# dnf module list php
Name                                                      Stream                                                      Profiles                                                                       Summary                                                                   
php                                                       8.1                                                         common [d], devel, minimal                                                     PHP scripting language                                                    

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
```

### 現在のphpモジュールのリセット

切り替え前に現在のphpモジュールのバージョンをリセットしておきます。

```console
# dnf module reset php
```

### phpモジュールを切り替える

phpモジュールの切り替えを行います。今回は```php:8.1```に切り替えます。

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

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

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

### 新しいバージョンのphpをインストール

新しいバージョンのphpをインストール（アップグレード）します。このとき、既存のphpをアンインストールする必要はありません。

```console
#  dnf install php
===============================================================================================================================================================================================================================================================================
 パッケージ                                                  アーキテクチャー                                      バージョン                                                                          リポジトリー                                                      サイズ
===============================================================================================================================================================================================================================================================================
アップグレード:
 php                                                         x86_64                                                8.1.14-1.module+el9+1008+29511cc9                                                   9-latest-AppStream                                                 10 k
 php-cli                                                     x86_64                                                8.1.14-1.module+el9+1008+29511cc9                                                   9-latest-AppStream                                                3.5 M
 php-common                                                  x86_64                                                8.1.14-1.module+el9+1008+29511cc9                                                   9-latest-AppStream                                                668 k
 php-devel                                                   x86_64                                                8.1.14-1.module+el9+1008+29511cc9                                                   9-latest-AppStream                                                681 k
 php-fpm                                                     x86_64                                                8.1.14-1.module+el9+1008+29511cc9                                                   9-latest-AppStream                                                1.8 M
 php-mbstring                                                x86_64                                                8.1.14-1.module+el9+1008+29511cc9                                                   9-latest-AppStream                                                473 k
 php-opcache                                                 x86_64                                                8.1.14-1.module+el9+1008+29511cc9                                                   9-latest-AppStream                                                376 k
 php-pdo                                                     x86_64                                                8.1.14-1.module+el9+1008+29511cc9                                                   9-latest-AppStream                                                 84 k
 php-pecl-zip                                                x86_64                                                1.20.1-1.module+el9+1008+29511cc9                                                   9-latest-AppStream                                                 55 k
 php-pgsql                                                   x86_64                                                8.1.14-1.module+el9+1008+29511cc9                                                   9-latest-AppStream                                                 75 k
 php-process                                                 x86_64                                                8.1.14-1.module+el9+1008+29511cc9                                                   9-latest-AppStream                                                 42 k
 php-xml                                                     x86_64                                                8.1.14-1.module+el9+1008+29511cc9                                                   9-latest-AppStream                                                140 k

トランザクションの概要
===============================================================================================================================================================================================================================================================================
アップグレード  12 パッケージ

ダウンロードサイズの合計: 7.8 M
これでよろしいですか? [y/N]: y

...

完了しました!
```

### バージョンが新しくなっていることを確認

再度、```php -v```コマンドでバージョンを確認すると、8.1.14に上がっていることがわかります。

```console
# php -v
PHP 8.1.14 (cli) (built: Jan  4 2023 17:23:14) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.14, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.14, Copyright (c), by Zend Technologies
```

:::note warn
/etc/php.iniは旧バージョンのものが維持されます。必要に応じて新バージョンのphp.iniに切り替えや、設定の変更をしてください。
:::