本記事では、PHP 8.3 を CentOS Stream 9 にインストールする方法について説明しています。
また、他の PHP バージョン 7.4、8.1、8.2 等に切り替える方法についても説明しています。
環境情報
本記事では、以下バージョンにてインストールを行った結果を掲載しています。
・OS:CentOS Stream 9
・Apache:2.4
・PHP:8.3
今回 WebアプリをPHPで作成する想定での環境構築のため、 前提条件として Apache 2.4 がインストールされている必要があります。
Apache 2.4 の環境構築方法についてはこちらの記事 にまとめていますのでまだ準備できていない方は参考にしていただければと思います。
インストール完了後に、CentOS 内に PHP が構築される環境イメージ図です。
黄色背景の部分が本手順で PHP をインストールすることで作成されます。
ホストOS内の Virtual Box 内にあるゲストOS の CentOS Stream 9(192.168.56.88)に PHP 8.3 が構築されるイメージです。
記事の最後には、PHP のバージョンアップ時などに活用できるコマンドについても記載しています。
それではインストールしていきましょう!
インストール
今回は CentOS Stream 8 から追加された モジュール というパッケージ管理の仕組みを利用してインストールしていきます。
CentOS Stream 9(192.168.56.88)にログインした状態で以下コマンドを実行してインストールを行います。
1.CentOS Stresm9 の標準リポジトリでインストール可能な PHP バージョンの確認 & サポート期限について
はじめに、CentOS Stream 9 の標準リポジトリでインストール可能な PHP のバージョンを確認してみましょう。
dnf info php
# [check] => CentOS Stream 9 で標準インストールされる PHP はバージョン 8.0 であることが確認できます
dnf module list php # PHP モジュールの一覧を確認
# [check] => CentOS Stream 9 - AppStream リポジトリでは、8.1, 8.2 も選択できるようです
実行結果
[root@localhost ~]# dnf info php
CentOS Stream 9 - BaseOS 5.6 kB/s | 8.2 kB 00:01
CentOS Stream 9 - BaseOS 2.8 MB/s | 8.2 MB 00:02
CentOS Stream 9 - AppStream 25 kB/s | 8.3 kB 00:00
CentOS Stream 9 - AppStream 4.7 MB/s | 20 MB 00:04
CentOS Stream 9 - Extras packages 41 kB/s | 8.9 kB 00:00
利用可能なパッケージ
名前 : php
バージョン : 8.0.30
リリース : 1.el9
Arch : x86_64
サイズ : 4.7 k
ソース : php-8.0.30-1.el9.src.rpm
リポジトリー : appstream
概要 : PHP scripting language for creating dynamic web sites
URL : http://www.php.net/
ライセンス : PHP and Zend and BSD and MIT and ASL 1.0 and NCSA
説明 : PHP is an HTML-embedded scripting language. PHP attempts to make it
: easy for developers to write dynamically generated web pages. PHP also
: offers built-in database integration for several commercial and
: non-commercial database management systems, so writing a
: database-enabled webpage with PHP is fairly simple. The most common
: use of PHP coding is probably as a replacement for CGI scripts.
[root@localhost ~]# # [check] => CentOS Stream 9 で標準インストールされる PHP はバージョン 8.0 であることが確認できます
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# dnf module list php # PHP モジュールの一覧を確認
メタデータの期限切れの最終確認: 0:00:15 前の 2024年08月24日 19時04分36秒 に実施しました。
CentOS Stream 9 - AppStream
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
php 8.2 common [d], devel, minimal PHP scripting language
ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[root@localhost ~]# # [check] => CentOS Stream 9 - AppStream リポジトリでは、8.1, 8.2 も選択できるようです
[root@localhost ~]#
標準リポジトリでは、PHP 8.0、8.1、8.2 がインストール可能であることがわかりました。
今回は、パッケージ管理の仕組みを利用して最新版のPHPをインストールしていくので、PHPの各種バージョンを提供している remi リポジトリを使用して記事作成時点で最新版の PHP 8.3 をインストールしていきます。
ポリシー都合等でサードパーティーリポジトリ(remi等)を使用不可の場合で最新版を使用したい場合は、AppStream の最新バージョン(8.2)を使うことになるでしょう。
もしくは、PHP公式が公開しているソースコードを取得しビルド、インストールといった方法になるでしょう。
remi レポジトリを追加することで、PHP 8.0よりも前のバージョン 7.4 等を CentOS Stream 9 にインストール可能です。
以下、サポート期限についての余談です。(インストール手順をお急ぎの方は 2.へお進みください)
※2024/8/24時点での確認内容ですので、最新情報は公式サイトをご確認いただき、確認方法の参考程度にお読みいただければと思います。
はじめに PHPの公式サイト で、PHPのサポート期限を確認してみます。
PHP 8.0 まではサポートが終了しており、リリースから約4年後にセキュリティサポート終了となるようです。
サポート終了後は、対象バージョンに脆弱性が見つかっても対処されない(脆弱性が残ったままの PHP となる)とイメージいただければと思います。
次に RHELの公式サイト で PHP のサポート期限を確認してみます。
※今回、OS は CentOS Stream 9 なのになぜ RHEL のサイトを確認?という疑問については、こちらの RedHat の記事 に RHEL と CentOS Stream の関係性が記載されていますので、気になる方はご確認ください。
手順の最初に実行した確認コマンドで結果に出てきた PHP 8.0、8.1、8.2 のサポート期限を確認できました。
それぞれ PHP 公式のサポート期限とは異なる日付が設定されています。
また、PHP 8.0 は Full Life となっており PHP 8.1 や 8.2 よりも長い 2032年5月までがサポート期限となっています。
ここで、PHP 公式サイトのサポート期限より RHEL のサポートの方が長いものが疑問になります。
これは、PHP 公式のサポートが終了した後も、該当のバージョンで脆弱性が見つかった際に RHEL 側で対処したものを提供してくれる期限となっています。
・特定のバージョンの PHP を長く使いたい。
・PHP のバージョンアップを頻繁に行えない。
といった要件がある場合には非常に助かると思います。
いずれのバージョンを利用しているにせよセキュリティ観点では、
・サポート期間内であること
・対象バージョンの最新版(PHP 8.1.xx の xx の部分)
を利用していることが重要です。
話をインストールに戻します。
2.リポジトリの追加
PHP の各種バージョンを提供している remi レポジトリを追加します。
追加するリポジトリの URL は Remi’s RPM repository のサイト で確認します。
dnf repolist all # リポジトリの一覧を確認
# [check] => CentOS Stream 9 標準のリポジトリのみが表示されていることが確認できる
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm # remiリポジトリの追加
dnf repolist all | grep -v 'CentOS Stream 9' # 追加されたリポジトリ(CentOS Stream 9 を含まないもの)を確認
# [check] => remi と epel(Extra Packages for Enterprise Linux) が追加されていること
実行結果
[root@localhost ~]# dnf repolist all # リポジトリの一覧を確認
repo id repo の名前 状態
appstream CentOS Stream 9 - AppStream 有効化
appstream-debuginfo CentOS Stream 9 - AppStream - Debug 無効化
appstream-source CentOS Stream 9 - AppStream - Source 無効化
baseos CentOS Stream 9 - BaseOS 有効化
baseos-debuginfo CentOS Stream 9 - BaseOS - Debug 無効化
baseos-source CentOS Stream 9 - BaseOS - Source 無効化
crb CentOS Stream 9 - CRB 無効化
crb-debuginfo CentOS Stream 9 - CRB - Debug 無効化
crb-source CentOS Stream 9 - CRB - Source 無効化
extras-common CentOS Stream 9 - Extras packages 有効化
extras-common-source CentOS Stream 9 - Extras packages - Source 無効化
highavailability CentOS Stream 9 - HighAvailability 無効化
highavailability-debuginfo CentOS Stream 9 - HighAvailability - Debug 無効化
highavailability-source CentOS Stream 9 - HighAvailability - Source 無効化
nfv CentOS Stream 9 - NFV 無効化
nfv-debuginfo CentOS Stream 9 - NFV - Debug 無効化
nfv-source CentOS Stream 9 - NFV - Source 無効化
resilientstorage CentOS Stream 9 - ResilientStorage 無効化
resilientstorage-debuginfo CentOS Stream 9 - ResilientStorage - Debug 無効化
resilientstorage-source CentOS Stream 9 - ResilientStorage - Source 無効化
rt CentOS Stream 9 - RT 無効化
rt-debuginfo CentOS Stream 9 - RT - Debug 無効化
rt-source CentOS Stream 9 - RT - Source 無効化
[root@localhost ~]# # [check] => CentOS Stream 9 標準のリポジトリのみが表示されていることが確認できる
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm # remiリポジトリの追加
メタデータの期限切れの最終確認: 0:02:58 前の 2024年08月24日 19時04分36秒 に実施しました。
remi-release-9.rpm 13 kB/s | 30 kB 00:02
依存関係が解決しました。
======================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
======================================================================================================================================
インストール:
remi-release noarch 9.4-2.el9.remi @commandline 30 k
依存関係のインストール:
epel-release noarch 9-7.el9 extras-common 19 k
弱い依存関係のインストール:
epel-next-release noarch 9-7.el9 extras-common 8.1 k
トランザクションの概要
======================================================================================================================================
インストール 3 パッケージ
合計サイズ: 57 k
ダウンロードサイズの合計: 27 k
インストール後のサイズ: 60 k
パッケージのダウンロード:
(1/2): epel-next-release-9-7.el9.noarch.rpm 73 kB/s | 8.1 kB 00:00
(2/2): epel-release-9-7.el9.noarch.rpm 145 kB/s | 19 kB 00:00
--------------------------------------------------------------------------------------------------------------------------------------
合計 36 kB/s | 27 kB 00:00
CentOS Stream 9 - Extras packages 2.1 MB/s | 2.1 kB 00:00
GPG 鍵 0x1D997668 をインポート中:
Userid : "CentOS Extras SIG (https://wiki.centos.org/SpecialInterestGroup) <security@centos.org>"
Fingerprint: 363F C097 2F64 B699 AED3 968E 1FF6 A217 1D99 7668
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512
鍵のインポートに成功しました
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
準備中 : 1/1
インストール中 : epel-release-9-7.el9.noarch 1/3
scriptletの実行中: epel-release-9-7.el9.noarch 1/3
Many EPEL packages require the CodeReady Builder (CRB) repository.
It is recommended that you run /usr/bin/crb enable to enable the CRB repository.
インストール中 : epel-next-release-9-7.el9.noarch 2/3
インストール中 : remi-release-9.4-2.el9.remi.noarch 3/3
scriptletの実行中: remi-release-9.4-2.el9.remi.noarch 3/3
検証中 : epel-next-release-9-7.el9.noarch 1/3
検証中 : epel-release-9-7.el9.noarch 2/3
検証中 : remi-release-9.4-2.el9.remi.noarch 3/3
インストール済み:
epel-next-release-9-7.el9.noarch epel-release-9-7.el9.noarch remi-release-9.4-2.el9.remi.noarch
完了しました!
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# dnf repolist all | grep -v 'CentOS Stream 9' # 追加されたリポジトリ(CentOS Stream 9 を含まないもの)を確認
repo id repo の名前 状態
epel Extra Packages for Enterprise Linux 9 - x86 有効化
epel-cisco-openh264 Extra Packages for Enterprise Linux 9 openh 有効化
epel-cisco-openh264-debuginfo Extra Packages for Enterprise Linux 9 openh 無効化
epel-cisco-openh264-source Extra Packages for Enterprise Linux 9 openh 無効化
epel-debuginfo Extra Packages for Enterprise Linux 9 - x86 無効化
epel-next Extra Packages for Enterprise Linux 9 - Nex 有効化
epel-next-debuginfo Extra Packages for Enterprise Linux 9 - Nex 無効化
epel-next-source Extra Packages for Enterprise Linux 9 - Nex 無効化
epel-next-testing Extra Packages for Enterprise Linux 9 - Nex 無効化
epel-next-testing-debuginfo Extra Packages for Enterprise Linux 9 - Nex 無効化
epel-next-testing-source Extra Packages for Enterprise Linux 9 - Nex 無効化
epel-source Extra Packages for Enterprise Linux 9 - x86 無効化
epel-testing Extra Packages for Enterprise Linux 9 - Tes 無効化
epel-testing-debuginfo Extra Packages for Enterprise Linux 9 - Tes 無効化
epel-testing-source Extra Packages for Enterprise Linux 9 - Tes 無効化
remi Remi's RPM repository for Enterprise Linux 無効化
remi-debuginfo Remi's RPM repository for Enterprise Linux 無効化
remi-modular Remi's Modular repository for Enterprise Li 有効化
remi-modular-debuginfo Remi's Modular repository for Enterprise Li 無効化
remi-modular-test Remi's Modular testing repository for Enter 無効化
remi-modular-test-debuginfo Remi's Modular testing repository for Enter 無効化
remi-safe Safe Remi's RPM repository for Enterprise L 有効化
remi-safe-debuginfo Remi's RPM repository for Enterprise Linux 無効化
remi-test Remi's test RPM repository for Enterprise L 無効化
remi-test-debuginfo Remi's test RPM repository for Enterprise L 無効化
[root@localhost ~]# # [check] => remi と epel(Extra Packages for Enterprise Linux) が追加されていること
[root@localhost ~]#
remi リポジトリをインストールすると、必要な epel リポジトリというが依存関係で必要なので未導入の場合は一緒にインストールされます。
3.PHP モジュールの確認 & インストールするバージョンの指定
remi リポジトリを追加したので、インストール可能な PHP バージョンの確認をしていきます。
手順1.では出てこなかった、PHP 8.3 が確認できるはずです。
dnf module list php # PHP モジュールの一覧を確認
# [check] => インストール済を表す [i] が表示されているバージョンが無いこと
dnf module -y reset php # PHP モジュールを初期状態(有効でも無効でもない状態)にリセット
dnf module -y enable php:remi-8.3 # remi-8.3 ストリームの PHP モジュールを有効化
dnf module list php # PHP モジュールの一覧を確認
# [check] => 有効を表す [e] が remi-8.3 に表示されていること
実行結果
[root@localhost ~]# dnf module list php # PHP モジュールの一覧を確認
Extra Packages for Enterprise Linux 9 - x86_64 6.5 MB/s | 22 MB 00:03
Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64 1.7 kB/s | 2.5 kB 00:01
Extra Packages for Enterprise Linux 9 - Next - x86_64 323 kB/s | 276 kB 00:00
Remi's Modular repository for Enterprise Linux 9 - x86_64 219 kB/s | 675 kB 00:03
Safe Remi's RPM repository for Enterprise Linux 9 - x86_64 294 kB/s | 1.0 MB 00:03
CentOS Stream 9 - AppStream
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
php 8.2 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
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
php remi-8.2 common [d], devel, minimal PHP scripting language
php remi-8.3 common [d], devel, minimal PHP scripting language
ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[root@localhost ~]# # [check] => インストール済を表す [i] が表示されているバージョンが無いこと
[root@localhost ~]#
[root@localhost ~]# dnf module -y reset php # PHP モジュールを初期状態(有効でも無効でもない状態)にリセット
メタデータの期限切れの最終確認: 0:00:25 前の 2024年08月24日 19時10分02秒 に実施しました。
依存関係が解決しました。
行うべきことはありません。
完了しました!
[root@localhost ~]#
[root@localhost ~]# dnf module -y enable php:remi-8.3 # remi-8.3 ストリームの PHP モジュールを有効化
メタデータの期限切れの最終確認: 0:00:36 前の 2024年08月24日 19時10分02秒 に実施しました。
依存関係が解決しました。
======================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
======================================================================================================================================
モジュールストリームの有効化中:
php remi-8.3
トランザクションの概要
======================================================================================================================================
完了しました!
[root@localhost ~]#
[root@localhost ~]# dnf module list php # PHP モジュールの一覧を確認
メタデータの期限切れの最終確認: 0:00:45 前の 2024年08月24日 19時10分02秒 に実施しました。
CentOS Stream 9 - AppStream
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
php 8.2 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
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
php remi-8.2 common [d], devel, minimal PHP scripting language
php remi-8.3 [e] common [d], devel, minimal PHP scripting language
ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[root@localhost ~]# # [check] => 有効を表す [e] が remi-8.3 に表示されていること
[root@localhost ~]#
ここで、remi-8.3 Stream を有効 [e] にすることで次の手順で、インストール時にPHP 8.3 がインストールされます。
他の Stream を有効 [e] にすれば他のバージョンがインストールされます。
4.PHP 8.3 のインストール
PHP をインストールしていきます。
dnf list installed | grep -i php # php を含むインストール済みパッケージの確認
# [check] => 何も表示されないこと
dnf info php # インストール対象のバージョンを確認
# [check] => PHP 8.3.x となっていること
dnf module -y install php # PHP をインストール
dnf info php-mysqlnd # mysql用の php モジュール追加(バージョンを確認)
# [check] => PHP 8.3.x となっていること
dnf install -y php-mysqlnd # php-mysqlnd をインストール
dnf list installed | grep -i php # php を含むインストール済みパッケージの確認
# [check] => インストールしたパッケージが表示されること
実行結果
[root@localhost ~]# dnf list installed | grep -i php # php を含むインストール済みパッケージの確認
[root@localhost ~]# # [check] => 何も表示されないこと
[root@localhost ~]#
[root@localhost ~]# dnf info php # インストール対象のバージョンを確認
メタデータの期限切れの最終確認: 0:12:26 前の 2024年08月24日 19時10分02秒 に実施しました。
利用可能なパッケージ
名前 : php
バージョン : 8.3.10
リリース : 1.el9.remi
Arch : x86_64
サイズ : 1.8 M
ソース : php-8.3.10-1.el9.remi.src.rpm
リポジトリー : remi-modular
概要 : PHP scripting language for creating dynamic web sites
URL : http://www.php.net/
ライセンス : PHP-3.01 AND Zend-2.0 AND BSD-2-Clause AND MIT AND Apache-1.0 AND NCSA AND BSL-1.0
説明 : PHP is an HTML-embedded scripting language. PHP attempts to make it
: easy for developers to write dynamically generated web pages. PHP also
: offers built-in database integration for several commercial and
: non-commercial database management systems, so writing a
: database-enabled webpage with PHP is fairly simple. The most common
: use of PHP coding is probably as a replacement for CGI scripts.
:
: The php package contains the module (often referred to as mod_php)
: which adds support for the PHP language to Apache HTTP Server.
[root@localhost ~]# # [check] => PHP 8.3.x となっていること
[root@localhost ~]#
[root@localhost ~]# dnf module -y install php # PHP をインストール
メタデータの期限切れの最終確認: 0:12:34 前の 2024年08月24日 19時10分02秒 に実施しました。
依存関係が解決しました。
======================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
======================================================================================================================================
group/moduleパッケージをインストール:
php-cli x86_64 8.3.10-1.el9.remi remi-modular 5.6 M
php-common x86_64 8.3.10-1.el9.remi remi-modular 1.2 M
php-fpm x86_64 8.3.10-1.el9.remi remi-modular 1.9 M
php-mbstring x86_64 8.3.10-1.el9.remi remi-modular 581 k
php-xml x86_64 8.3.10-1.el9.remi remi-modular 223 k
依存関係のインストール:
httpd-filesystem noarch 2.4.57-8.el9 appstream 13 k
libxslt x86_64 1.1.34-9.el9 appstream 243 k
oniguruma5php x86_64 6.9.9-1.el9.remi remi-safe 219 k
弱い依存関係のインストール:
nginx-filesystem noarch 1:1.20.1-16.el9 appstream 9.3 k
モジュールプロファイルのインストール中:
php/common
トランザクションの概要
======================================================================================================================================
インストール 9 パッケージ
ダウンロードサイズの合計: 10 M
インストール後のサイズ: 55 M
パッケージのダウンロード:
<<<<<<<<<<<<<<< 省略 >>>>>>>>>>>>>>>
インストール済み:
httpd-filesystem-2.4.57-8.el9.noarch libxslt-1.1.34-9.el9.x86_64 nginx-filesystem-1:1.20.1-16.el9.noarch
oniguruma5php-6.9.9-1.el9.remi.x86_64 php-cli-8.3.10-1.el9.remi.x86_64 php-common-8.3.10-1.el9.remi.x86_64
php-fpm-8.3.10-1.el9.remi.x86_64 php-mbstring-8.3.10-1.el9.remi.x86_64 php-xml-8.3.10-1.el9.remi.x86_64
完了しました!
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# dnf info php-mysqlnd # mysql用の php モジュール追加(バージョンを確認)
メタデータの期限切れの最終確認: 0:13:00 前の 2024年08月24日 19時10分02秒 に実施しました。
利用可能なパッケージ
名前 : php-mysqlnd
バージョン : 8.3.10
リリース : 1.el9.remi
Arch : x86_64
サイズ : 219 k
ソース : php-8.3.10-1.el9.remi.src.rpm
リポジトリー : remi-modular
概要 : A module for PHP applications that use MySQL databases
URL : http://www.php.net/
ライセンス : PHP-3.01
説明 : The php-mysqlnd package contains a dynamic shared object that will add
: MySQL database support to PHP. MySQL is an object-relational database
: management system. PHP is an HTML-embeddable scripting language. If
: you need MySQL support for PHP applications, you will need to install
: this package and the php package.
:
: This package use the MySQL Native Driver
[root@localhost ~]# # [check] => PHP 8.3.x となっていること
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# dnf install -y php-mysqlnd # php-mysqlnd をインストール
メタデータの期限切れの最終確認: 0:16:49 前の 2024年08月24日 19時10分02秒 に実施しました。
依存関係が解決しました。
======================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
======================================================================================================================================
インストール:
php-mysqlnd x86_64 8.3.10-1.el9.remi remi-modular 219 k
依存関係のインストール:
php-pdo x86_64 8.3.10-1.el9.remi remi-modular 121 k
トランザクションの概要
======================================================================================================================================
インストール 2 パッケージ
ダウンロードサイズの合計: 340 k
インストール後のサイズ: 1.4 M
パッケージのダウンロード:
<<<<<<<<<<<<<<< 省略 >>>>>>>>>>>>>>>
インストール済み:
php-mysqlnd-8.3.10-1.el9.remi.x86_64 php-pdo-8.3.10-1.el9.remi.x86_64
完了しました!
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# dnf list installed | grep -i php # php を含むインストール済みパッケージの確認
oniguruma5php.x86_64 6.9.9-1.el9.remi @remi-safe
php-cli.x86_64 8.3.10-1.el9.remi @remi-modular
php-common.x86_64 8.3.10-1.el9.remi @remi-modular
php-fpm.x86_64 8.3.10-1.el9.remi @remi-modular
php-mbstring.x86_64 8.3.10-1.el9.remi @remi-modular
php-mysqlnd.x86_64 8.3.10-1.el9.remi @remi-modular
php-pdo.x86_64 8.3.10-1.el9.remi @remi-modular
php-xml.x86_64 8.3.10-1.el9.remi @remi-modular
[root@localhost ~]# # [check] => インストールしたパッケージが表示されること
[root@localhost ~]#
5.インストール後の確認
PHP のバージョン確認をしていきます。
また、phpinfo() の結果を表示させてPHPが動作しているかも確認してみます。
php -v # php のバージョン確認
# [check] => バージョン情報に 8.3.xx と表示されること
echo '<?php phpinfo(); ?>' > /var/www/html/index.php # 確認用ページの作成
systemctl restart httpd # httpd 再起動
systemctl status httpd # httpd 状態確認
# [check] => active (running) と表示されること
# http://192.168.56.88/index.php # ブラウザにてアクセス確認(確認用ページ)
実行結果
[root@localhost ~]# php -v # php のバージョン確認
PHP 8.3.10 (cli) (built: Jul 30 2024 13:44:37) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.3.10, Copyright (c) Zend Technologies
[root@localhost ~]#
[root@localhost ~]# echo '<?php phpinfo(); ?>' > /var/www/html/index.php # 確認用ページの作成
[root@localhost ~]#
[root@localhost ~]# systemctl restart httpd # httpd 再起動
[root@localhost ~]# systemctl status httpd # httpd 状態確認
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled)
Drop-In: /etc/systemd/system/httpd.service.d
mqphp-fpm.conf
Active: active (running) since Sun 2024-08-25 11:30:45 JST; 6s ago
Docs: man:httpd.service(8)
Main PID: 11802 (httpd)
Status: "Started, listening on: port 80"
Tasks: 177 (limit: 23141)
Memory: 25.6M
CPU: 198ms
CGroup: /system.slice/httpd.service
tq11802 /usr/sbin/httpd -DFOREGROUND
tq11803 /usr/sbin/httpd -DFOREGROUND
tq11804 /usr/sbin/httpd -DFOREGROUND
tq11805 /usr/sbin/httpd -DFOREGROUND
mq11806 /usr/sbin/httpd -DFOREGROUND
8月 25 11:30:45 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
8月 25 11:30:45 localhost.localdomain httpd[11802]: Server configured, listening on: port 80
8月 25 11:30:45 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
[root@localhost ~]# # [check] => active (running) と表示されること
10行目の確認(http://192.168.56.88/index.php)で下記画面が表示されていればインストール成功です。
PHP 8.3 のインストール作業は以上です。
6.おまけ(他のPHPバージョンに切り替える)
今回、PHP 8.3 のインストールを行いました。
最後に頻繁に使う機能でないですがおまけとして他の PHP バージョンを使いたいとなった場合に便利な方法を載せておきます。
PHP 8.3(remi-8.3) から PHP 8.2(remi-8.2) に切り替えます。
dnf module list php # 状況確認
# [check] => remi-8.3 に [e] と [i] が表示されていること
dnf module -y switch-to php:remi-8.2 # remi-8.2 に切り替え
dnf module list php # 状況確認
# [check] => remi-8.2 に [e] と [i] が表示されていること
php -v # PHP バージョン確認
# [check] => PHP 8.2.x であること
実行結果
[root@localhost ~]# dnf module list php # 状況確認
メタデータの期限切れの最終確認: 0:14:30 前の 2024年08月24日 19時30分31秒 に実施しました。
CentOS Stream 9 - AppStream
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
php 8.2 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
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
php remi-8.2 common [d], devel, minimal PHP scripting language
php remi-8.3 [e] common [d] [i], devel, minimal PHP scripting language
ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[root@localhost ~]# # [check] => remi-8.3 に [e] と [i] が表示されていること
[root@localhost ~]#
[root@localhost ~]# dnf module -y switch-to php:remi-8.2 # remi-8.2 に切り替え
メタデータの期限切れの最終確認: 0:14:47 前の 2024年08月24日 19時30分31秒 に実施しました。
依存関係が解決しました。
======================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
======================================================================================================================================
ダウングレード:
php-cli x86_64 8.2.22-1.el9.remi remi-modular 5.4 M
php-common x86_64 8.2.22-1.el9.remi remi-modular 857 k
php-fpm x86_64 8.2.22-1.el9.remi remi-modular 1.8 M
php-mbstring x86_64 8.2.22-1.el9.remi remi-modular 576 k
php-mysqlnd x86_64 8.2.22-1.el9.remi remi-modular 219 k
php-pdo x86_64 8.2.22-1.el9.remi remi-modular 118 k
php-xml x86_64 8.2.22-1.el9.remi remi-modular 216 k
モジュールストリームの切り替え中:
php remi-8.3 -> remi-8.2
トランザクションの概要
======================================================================================================================================
ダウングレード 7 パッケージ
ダウンロードサイズの合計: 9.2 M
パッケージのダウンロード:
<<<<<<<<<<<<<<< 省略 >>>>>>>>>>>>>>>
ダウングレード済み:
php-cli-8.2.22-1.el9.remi.x86_64 php-common-8.2.22-1.el9.remi.x86_64 php-fpm-8.2.22-1.el9.remi.x86_64
php-mbstring-8.2.22-1.el9.remi.x86_64 php-mysqlnd-8.2.22-1.el9.remi.x86_64 php-pdo-8.2.22-1.el9.remi.x86_64
php-xml-8.2.22-1.el9.remi.x86_64
完了しました!
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# dnf module list php # 状況確認
メタデータの期限切れの最終確認: 0:15:23 前の 2024年08月24日 19時30分31秒 に実施しました。
CentOS Stream 9 - AppStream
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
php 8.2 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
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
php remi-8.2 [e] common [d] [i], devel, minimal PHP scripting language
php remi-8.3 common [d], devel, minimal PHP scripting language
ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[root@localhost ~]# # [check] => remi-8.2 に [e] と [i] が表示されていること
[root@localhost ~]#
[root@localhost ~]# php -v # PHP バージョン確認
PHP 8.2.22 (cli) (built: Jul 30 2024 11:47:12) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.22, Copyright (c) Zend Technologies
[root@localhost ~]# # [check] => PHP 8.2.x であること
ブラウザをリロードすると Web 画面に表示される PHP バージョンも 8.2 に変更されています。
次に、インストール時の手順に近い方法でバージョン変更を実施してみます。
PHP 8.2(remi-8.2) から PHP 8.0(8.0) に切り替えます。
dnf module list php # 状況確認
# [check] => remi-8.2 に [e] と [i] が表示されていること
dnf module -y reset php # PHP モジュールを初期状態(有効でも無効でもない状態)にリセット
dnf module -y enable php:8.0 # 8.0 ストリームの PHP モジュールを有効化
dnf module -y install php # 8.0 のインストール
dnf module list php # 状況確認
# [check] => 8.0 に [e] と [i] が表示されていること
実行結果
[root@localhost ~]# dnf module list php # 状況確認
メタデータの期限切れの最終確認: 0:26:56 前の 2024年08月24日 19時30分31秒 に実施しました。
CentOS Stream 9 - AppStream
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
php 8.2 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
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
php remi-8.2 [e] common [d] [i], devel, minimal PHP scripting language
php remi-8.3 common [d], devel, minimal PHP scripting language
ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[root@localhost ~]# # [check] => remi-8.2 に [e] と [i] が表示されていること
[root@localhost ~]#
[root@localhost ~]# dnf module -y reset php # PHP モジュールを初期状態(有効でも無効でもない状態)にリセット
メタデータの期限切れの最終確認: 0:27:03 前の 2024年08月24日 19時30分31秒 に実施しました。
依存関係が解決しました。
======================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
======================================================================================================================================
モジュールプロファイルの無効化中:
php/common
モジュールの再設定中:
php
トランザクションの概要
======================================================================================================================================
完了しました!
[root@localhost ~]#
[root@localhost ~]# dnf module -y enable php:8.1 # 8.1 ストリームの PHP モジュールを有効化
メタデータの期限切れの最終確認: 0:27:40 前の 2024年08月24日 19時30分31秒 に実施しました。
依存関係が解決しました。
======================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
======================================================================================================================================
モジュールストリームの有効化中:
php 8.1
トランザクションの概要
======================================================================================================================================
完了しました!
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# dnf module -y install php # 8.1 のインストール
メタデータの期限切れの最終確認: 0:28:17 前の 2024年08月24日 19時30分31秒 に実施しました。
依存関係が解決しました。
======================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
======================================================================================================================================
ダウングレード:
php-cli x86_64 8.1.27-1.module_el9+790+4812d76d appstream 3.5 M
php-common x86_64 8.1.27-1.module_el9+790+4812d76d appstream 692 k
php-fpm x86_64 8.1.27-1.module_el9+790+4812d76d appstream 1.8 M
php-mbstring x86_64 8.1.27-1.module_el9+790+4812d76d appstream 473 k
php-mysqlnd x86_64 8.1.27-1.module_el9+790+4812d76d appstream 145 k
php-pdo x86_64 8.1.27-1.module_el9+790+4812d76d appstream 83 k
php-xml x86_64 8.1.27-1.module_el9+790+4812d76d appstream 146 k
モジュールプロファイルのインストール中:
php/common
トランザクションの概要
======================================================================================================================================
ダウングレード 7 パッケージ
ダウンロードサイズの合計: 6.8 M
パッケージのダウンロード:
<<<<<<<<<<<<<<< 省略 >>>>>>>>>>>>>>>
ダウングレード済み:
php-cli-8.1.27-1.module_el9+790+4812d76d.x86_64 php-common-8.1.27-1.module_el9+790+4812d76d.x86_64
php-fpm-8.1.27-1.module_el9+790+4812d76d.x86_64 php-mbstring-8.1.27-1.module_el9+790+4812d76d.x86_64
php-mysqlnd-8.1.27-1.module_el9+790+4812d76d.x86_64 php-pdo-8.1.27-1.module_el9+790+4812d76d.x86_64
php-xml-8.1.27-1.module_el9+790+4812d76d.x86_64
完了しました!
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# dnf module list php # 状況確認
メタデータの期限切れの最終確認: 0:28:32 前の 2024年08月24日 19時30分31秒 に実施しました。
CentOS Stream 9 - AppStream
Name Stream Profiles Summary
php 8.1 [e] common [d] [i], devel, minimal PHP scripting language
php 8.2 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
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
php remi-8.2 common [d], devel, minimal PHP scripting language
php remi-8.3 common [d], devel, minimal PHP scripting language
ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[root@localhost ~]# # [check] => 8.1 に [e] と [i] が表示されていること
[root@localhost ~]#
[root@localhost ~]# php -v
PHP 8.1.27 (cli) (built: Dec 19 2023 20:35:55) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.27, Copyright (c) Zend Technologies
[root@localhost ~]#
ブラウザをリロードすると Web 画面に表示される PHP バージョンも 8.1 に変更されています。
まとめ
本記事では、PHP 8.3 を CentOS Stream 9 にインストールし、ブラウザから PHP の動作確認を行いました。
基本的な流れをイメージ頂けていれば幸いです。
最後までお読みくださり、ありがとうございました。