RHEL8/CentOS8にPHP8をインストールする

実際に実施したのはRed Hat Enterprise Linux release 8へのインストールだけど、CentOS8でも同様だろう、とのことで表題の件、説明します。

1.EPELのインストール

標準レポジトリでは提供されていない(2021年10月現在)ので、拡張レポジトリをインストールします。まずはEPEL。この後のREMIを先にインストールしようとすると、以下のようなエラーに遭遇します。

広告

[dacelo@space ~]$ sudo yum install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
メタデータの期限切れの最終確認: 0:44:44 時間前の 2021年10月15日 16時12分08秒 に実施しました。
remi-release-8.rpm                                                                                                                                            25 kB/s |  26 kB     00:01    
エラー: 
 問題: conflicting requests
  - nothing provides epel-release = 8 needed by remi-release-8.4-1.el8.remi.noarch
(インストール不可のパッケージをスキップするには、'--skip-broken' を追加してみてください または、'--nobest' を追加して、最適候補のパッケージのみを使用しないでください)

「nothing provides epel-release」というわけで、先にEPELを入れます。

さっき癖でyumを使ってしまったので、ここからはちゃんとdnfを使いましょう。

[dacelo@space ~]$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
メタデータの期限切れの最終確認: 0:55:56 時間前の 2021年10月15日 16時12分08秒 に実施しました。
epel-release-latest-8.noarch.rpm                                                                                                                              32 kB/s |  23 kB     00:00    
依存関係が解決しました。
=============================================================================================================================================================================================
 パッケージ                                      アーキテクチャー                          バージョン                                  リポジトリー                                    サイズ
=============================================================================================================================================================================================
インストール:
 epel-release                                    noarch                                    8-13.el8                                    @commandline                                     23 k

トランザクションの概要
=============================================================================================================================================================================================
インストール  1 パッケージ

合計サイズ: 23 k
インストール後のサイズ: 35 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                                                                                                     1/1 
  インストール中   : epel-release-8-13.el8.noarch                                                                                                                                        1/1 
  scriptletの実行中: epel-release-8-13.el8.noarch                                                                                                                                        1/1 
  検証             : epel-release-8-13.el8.noarch                                                                                                                                        1/1 
Installed products updated.

インストール済み:
  epel-release-8-13.el8.noarch                                                                                                                                                               

完了しました!

よしよし。では次にRemiのインストール。

2.REMIのインストール

[dacelo@space ~]$ sudo yum install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Extra Packages for Enterprise Linux Modular 8 - x86_64                                                                                                       2.3 MB/s | 955 kB     00:00
Extra Packages for Enterprise Linux 8 - x86_64                                                                                                                13 MB/s |  10 MB     00:00
remi-release-8.rpm                                                                                                                                            26 kB/s |  26 kB     00:00
依存関係が解決しました。
=============================================================================================================================================================================================
パッケージ                                    アーキテクチャー                        バージョン                                        リポジトリー                                  サイズ
=============================================================================================================================================================================================
インストール:
remi-release                                  noarch                                  8.4-1.el8.remi                                    @commandline                                   26 k

トランザクションの概要
=============================================================================================================================================================================================
インストール  1 パッケージ

合計サイズ: 26 k
インストール後のサイズ: 20 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
準備             :                                                                                                                                                                     1/1
インストール中   : remi-release-8.4-1.el8.remi.noarch                                                                                                                                  1/1
検証             : remi-release-8.4-1.el8.remi.noarch                                                                                                                                  1/1
Installed products updated.

インストール済み:
remi-release-8.4-1.el8.remi.noarch

完了しました!

3.使用モジュールの切り替え(7.2→8.1)

現在使用中&使用可能なPHPモジュールのリストをこのコマンドで確認できます。
初回はremiのGPG鍵を確認するので何度も確認ダイアローグが出ますが、落ち着いて[y]を押します。

[dacelo@space ~]$ sudo dnf module list php
Remi's Modular repository for Enterprise Linux 8 - x86_64                                                                                                    547  B/s | 858  B     00:01
Remi's Modular repository for Enterprise Linux 8 - x86_64                                                                                                    3.0 MB/s | 3.1 kB     00:00
GPG 鍵 0x5F11735A をインポート中:
Userid     : "Remi's RPM repository "
Fingerprint: **** **** **** **** **** **** **** **** **** 
From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-remi.el8
これでよろしいですか? [y/N]: y
Remi's Modular repository for Enterprise Linux 8 - x86_64                                                                                                    313 kB/s | 888 kB     00:02
Safe Remi's RPM repository for Enterprise Linux 8 - x86_64                                                                                                   560  B/s | 858  B     00:01
Safe Remi's RPM repository for Enterprise Linux 8 - x86_64                                                                                                   3.0 MB/s | 3.1 kB     00:00
GPG 鍵 0x5F11735A をインポート中:
Userid     : "Remi's RPM repository "
Fingerprint: **** **** **** **** **** **** **** **** **** **** 
From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-remi.el8
これでよろしいですか? [y/N]: y
Safe Remi's RPM repository for Enterprise Linux 8 - x86_64                                                                                                   718 kB/s | 2.0 MB     00:02
メタデータの期限切れの最終確認: 0:00:01 時間前の 2021年10月15日 17時09分54秒 に実施しました。
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                                common [d], devel, minimal                                   PHP scripting language                              

Red Hat Enterprise Linux 8 for x86_64 - AppStream from RHUI (RPMs)
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 [e]                                 common [d] [i], devel, minimal                               PHP scripting language

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

デフォルト[d]が7.2であること、現在使用中[e]が7.4であること、最新で8.1が使用可能になっていることが分かりました。
このコマンドで使用モジュールを切り替えることができます。

[dacelo@space ~]$ sudo dnf module enable php:remi-8.1

が、現在使用中の場合はリセットしないとこんなエラーで叱られます。

[dacelo@space ~]$ sudo dnf module enable php:remi-8.1
メタデータの期限切れの最終確認: 0:00:41 時間前の 2021年10月15日 17時09分54秒 に実施しました。
依存関係が解決しました。
オペレーションは、モジュール 'php' ストリーム '7.4' を ストリーム 'remi-8.1' へと切り替える結果となります
エラー: モジュールの有効なストリームを切り替えることはできません。
モジュールからインストールされた全てのコンテンツを削除し、 'dnf module reset ' コマンドを使用してリセットすることが推奨されます。モジュールのリセット後、他のストリームをインストール可能です

推奨にしたがって、リセットしましょう。

[dacelo@space ~]$ sudo dnf module reset php
メタデータの期限切れの最終確認: 0:01:48 時間前の 2021年10月15日 17時09分54秒 に実施しました。
依存関係が解決しました。
=============================================================================================================================================================================================
パッケージ                                   アーキテクチャー                            バージョン                                      リポジトリー                                 サイズ
=============================================================================================================================================================================================
モジュールプロファイルの無効化中:
php/common
モジュールの再設定中:
php

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

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

よし。これでいよいよ8.1に切り替えられます。

[dacelo@space ~]$ sudo dnf module enable php:remi-8.1
メタデータの期限切れの最終確認: 0:01:57 時間前の 2021年10月15日 17時09分54秒 に実施しました。
モジュラーの依存に関する問題:

問題: module php:7.2:820181215112050:76554e01-0.x86_64 requires module(nginx:1.14), but none of the providers can be installed
- module nginx:1.14:8000020190830002848:f8e95b4e-0.x86_64 conflicts with module(nginx:1.18) provided by nginx:1.18:8040020210526100943:522a0ee4-0.x86_64
- module nginx:1.18:8040020210526100943:522a0ee4-0.x86_64 conflicts with module(nginx:1.14) provided by nginx:1.14:8000020190830002848:f8e95b4e-0.x86_64
- module nginx:1.14:820181214004940:9edba152-0.x86_64 conflicts with module(nginx:1.18) provided by nginx:1.18:8040020210526100943:522a0ee4-0.x86_64
- module nginx:1.18:8040020210526100943:522a0ee4-0.x86_64 conflicts with module(nginx:1.14) provided by nginx:1.14:820181214004940:9edba152-0.x86_64
- conflicting requests
依存関係が解決しました。
=============================================================================================================================================================================================
パッケージ                                   アーキテクチャー                            バージョン                                      リポジトリー                                 サイズ
=============================================================================================================================================================================================
モジュールストリームの有効化中:
php                                                                                      remi-8.1

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

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

4.関連ライブラリのアップデート

あとはApacheを再起動したら反映されるはず。その前に、関連ライブラリをphp8向けにアップデートしておきます。

[dacelo@space ~]$ sudo dnf install php php-cli php-common php-fpm
メタデータの期限切れの最終確認: 0:03:42 時間前の 2021年10月15日 17時09分54秒 に実施しました。
パッケージ php-cli-7.4.6-4.module+el8.3.0+7002+2eb69d76.x86_64 は既にインストールされています。
パッケージ php-common-7.4.6-4.module+el8.3.0+7002+2eb69d76.x86_64 は既にインストールされています。
パッケージ php-fpm-7.4.6-4.module+el8.3.0+7002+2eb69d76.x86_64 は既にインストールされています。
依存関係が解決しました。
=============================================================================================================================================================================================
パッケージ                                   アーキテクチャー                      バージョン                                             リポジトリー                                サイズ
=============================================================================================================================================================================================
インストール:
php                                          x86_64                                8.1.0~RC4-1.el8.remi                                   remi-modular                                1.8 M
アップグレード:
php-cli                                      x86_64                                8.1.0~RC4-1.el8.remi                                   remi-modular                                5.3 M
php-common                                   x86_64                                8.1.0~RC4-1.el8.remi                                   remi-modular                                1.2 M
置き換え  php-json.x86_64 7.4.6-4.module+el8.3.0+7002+2eb69d76
php-fpm                                      x86_64                                8.1.0~RC4-1.el8.remi                                   remi-modular                                1.8 M
php-mbstring                                 x86_64                                8.1.0~RC4-1.el8.remi                                   remi-modular                                515 k
php-mysqlnd                                  x86_64                                8.1.0~RC4-1.el8.remi                                   remi-modular                                251 k
php-pdo                                      x86_64                                8.1.0~RC4-1.el8.remi                                   remi-modular                                159 k
php-xml                                      x86_64                                8.1.0~RC4-1.el8.remi                                   remi-modular                                249 k
依存関係のインストール:
libsodium                                    x86_64                                1.0.18-2.el8                                           epel                                        162 k
oniguruma5php                                x86_64                                6.9.7.1-1.el8.remi                                     remi-safe                                   210 k
弱い依存関係のインストール:
php-opcache                                  x86_64                                8.1.0~RC4-1.el8.remi                                   remi-modular                                607 k
php-sodium                                   x86_64                                8.1.0~RC4-1.el8.remi                                   remi-modular                                100 k

トランザクションの概要
=============================================================================================================================================================================================
インストール    5 パッケージ
アップグレード  7 パッケージ

ダウンロードサイズの合計: 12 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/12): libsodium-1.0.18-2.el8.x86_64.rpm                                                                                                                    1.4 MB/s | 162 kB     00:00
(2/12): php-sodium-8.1.0~RC4-1.el8.remi.x86_64.rpm                                                                                                            85 kB/s | 100 kB     00:01
(3/12): php-opcache-8.1.0~RC4-1.el8.remi.x86_64.rpm                                                                                                          354 kB/s | 607 kB     00:01
(4/12): oniguruma5php-6.9.7.1-1.el8.remi.x86_64.rpm                                                                                                          443 kB/s | 210 kB     00:00
(5/12): php-8.1.0~RC4-1.el8.remi.x86_64.rpm                                                                                                                  899 kB/s | 1.8 MB     00:01
(6/12): php-fpm-8.1.0~RC4-1.el8.remi.x86_64.rpm                                                                                                              3.8 MB/s | 1.8 MB     00:00
(7/12): php-common-8.1.0~RC4-1.el8.remi.x86_64.rpm                                                                                                           1.7 MB/s | 1.2 MB     00:00
(8/12): php-cli-8.1.0~RC4-1.el8.remi.x86_64.rpm                                                                                                              5.4 MB/s | 5.3 MB     00:00
(9/12): php-mysqlnd-8.1.0~RC4-1.el8.remi.x86_64.rpm                                                                                                          1.0 MB/s | 251 kB     00:00
(10/12): php-mbstring-8.1.0~RC4-1.el8.remi.x86_64.rpm                                                                                                        1.9 MB/s | 515 kB     00:00
(11/12): php-pdo-8.1.0~RC4-1.el8.remi.x86_64.rpm                                                                                                             646 kB/s | 159 kB     00:00
(12/12): php-xml-8.1.0~RC4-1.el8.remi.x86_64.rpm                                                                                                             1.0 MB/s | 249 kB     00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                         2.6 MB/s |  12 MB     00:04
警告: /var/cache/dnf/epel-fafd94c310c51e1e/packages/libsodium-1.0.18-2.el8.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID 2f86d6a1: NOKEY
Extra Packages for Enterprise Linux 8 - x86_64                                                                                                               1.6 MB/s | 1.6 kB     00:00
GPG 鍵 0x2F86D6A1 をインポート中:
Userid     : "Fedora EPEL (8) "
Fingerprint: **** **** **** **** **** **** **** **** **** **** 
From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
これでよろしいですか? [y/N]: y

5.Apache再起動

あとはWebサーバを再起動して確認するだけです。

[dacelo@space ~]$ sudo systemctl restart httpd

さあ、phpのバージョンを確認してみると…

[dacelo@space ~]$ php -v
PHP Warning:  PHP Startup: Unable to load dynamic library 'mysqli' (tried: /usr/lib64/php/modules/mysqli (/usr/lib64/php/modules/mysqli: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mysqli.so (/usr/lib64/php/modules/mysqli.so: undefined symbol: mysqlnd_global_stats)) in Unknown on line 0
PHP 8.1.0RC4 (cli) (built: Oct 12 2021 23:53:13) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.0RC4, Copyright (c) Zend Technologies
with Zend OPcache v8.1.0RC4, Copyright (c), by Zend Technologies

ちゃんとPHP 8.1.0RC4 になっていることが分かりました。環境によってはこれで完了かと思います。
でもなんか当該環境では、library関連のWarningが出ていますね。これについては別エントリで解決を図りたいと思います。

About: dacelo


Leave a Reply

Your email address will not be published. Required fields are marked *