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 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" 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
デフォルト[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が出ていますね。これについては別エントリで解決を図りたいと思います。
I will right away grab your rss as I can’t in finding your e-mail subscription hyperlink or newsletter service. Do you’ve any? Please permit me understand in order that I may subscribe. Thanks.