CentOS Stream 9 でPHPの複数バージョンをDNFで同居する方法
篠原 隆司
アフィリエイト広告を利用しています
このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です
さくらのVPSにCentOS Stream 9をインストールした覚書です。
今回は、CentOS Stream 9にRemiのSoftware Collections(SCL)を使って複数バージョンのPHPをDNFでインストールします。PHP 7.4〜8.5をバージョンごとの章に分け、必要なものだけ選んで導入できるようにまとめました。
標準PHPを置き換えず、RemiリポジトリのSoftware Collections(SCL)を使用します。Apacheは既存のmod_fcgidとsuEXECをそのまま使い、サイトごとにPHPの実行ファイルを選択します。
実際の構築ではPHP 8.5とPHP 8.1を運用対象にしています。既存の標準PHP 8.1(Remi Modular版)は直ちに削除せず、SCL版PHP 8.1を別途導入します。PHPの各バージョンのインストール実行結果は、代表例としてPHP 8.5の章だけに掲載します。そのほかの章は実行コマンドを中心にまとめます。
以前、PHP 8.1をDNFでインストールした手順は、こちらの記事にまとめています。
CentOS Stream 9 にPHP8.1をDNFでインストール
ソースインストールではなくDNFによるインストールです。
PHP 7.4、8.0、8.1はPHP公式のサポートが終了しています。今回使用するRemi SCL版には、2026年10月のCVE-2026-109618、CVE-2026-109619への緩和策が取り込まれたパッケージがありますが、公式サポートの再開やすべての脆弱性の解消を意味しません。古いアプリケーションの移行・互換性確認のための選択肢として扱います。
なお本番環境で利用される場合はここにある内容だけを鵜呑みにせずセキュリティ専門家に相談されることをお勧めします。
環境
| 実施日 | 2026-10-27 |
| サーバ | さくらのVPS 2G
|
| OS | CentOS Stream 9 |
cat /etc/redhat-release
CentOS Stream release 9
事前確認
まずは、既存のApache、PHP、リポジトリの状態を確認します。
Apacheのバージョンです。
httpd -v
Server version: Apache/2.4.62 (CentOS Stream)
Server built: Aug 18 2026 00:00:00
現在の標準PHPのバージョンです。
php -v
PHP 8.1.34 (cli) (built: Jul 30 2026 12:04:32) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.34, Copyright (c) Zend Technologies
with Zend OPcache v8.1.34, Copyright (c), by Zend Technologies
ApacheのMPMと、CGI実行に使用するモジュールを確認します。
httpd -M 2>/dev/null | grep -Ei "mpm_|fcgid|suexec"
suexec_module (shared)
mpm_event_module (shared)
fcgid_module (shared)
Apacheのevent MPM、mod_fcgid、suEXECが読み込まれています。PHP-FPMに切り替えるのではなく、既存のCGI方式を継続します。
続いて、有効なPHPモジュールを確認します。
dnf module list php --enabled
メタデータの期限切れの最終確認: 0:03:49 前の 2026年10月27日 02時50分46秒 に実施しました。
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
php remi-8.1 [e] common [d] [i], devel, minimal PHP scripting language
ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
標準PHPにはRemiのremi-8.1モジュールが使われています。dnf module switch-toは標準PHPを置き換えるため、今回の方法では使用しません。
SCL版で使用するremi-safeリポジトリの状態を確認します。
dnf repolist all | grep remi-safe
remi-safe Safe Remi's RPM repository f 無効化
remi-safe-debuginfo Remi's RPM repository for En 無効化
remi-safeは無効になっています。リポジトリを常時有効に変更せず、DNF実行時だけ--enablerepo=remi-safeを付けます。
参考として、PHP 8.4とPHP 8.5を同時に指定したときの依存関係を確認します。--assumenoを指定しているため、実際のインストールは行いません。
dnf --enablerepo=remi-safe --assumeno install php84-php-cli php85-php-cli
メタデータの期限切れの最終確認: 0:05:44 前の 2026年10月27日 02時50分46秒 に実施しました。
依存関係が解決しました。
=========================================================================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
=========================================================================================================================================================================================
インストール:
php84-php-cli x86_64 8.4.27-1.el9.remi remi-safe 3.9 M
php85-php-cli x86_64 8.5.12-1.el9.remi remi-safe 6.2 M
依存関係のインストール:
capstone x86_64 4.0.2-12.el9 appstream 755 k
environment-modules x86_64 5.3.0-3.el9 baseos 586 k
php84-php-common x86_64 8.4.27-1.el9.remi remi-safe 769 k
php84-runtime x86_64 8.4-1.el9.remi remi-safe 1.1 M
php85-php-common x86_64 8.5.12-1.el9.remi remi-safe 823 k
php85-runtime x86_64 8.5-1.el9.remi remi-safe 1.1 M
scl-utils x86_64 1:2.0.3-4.el9 appstream 37 k
tcl x86_64 1:8.6.10-7.el9 baseos 1.1 M
vim-filesystem noarch 2:8.2.2637-43.el9 baseos 16 k
トランザクションの概要
=========================================================================================================================================================================================
インストール 11 パッケージ
ダウンロードサイズの合計: 16 M
インストール後のサイズ: 85 M
操作が中断されました。
依存関係は解決しています。既存PHPの削除や置き換えは含まれていません。最後の「操作が中断されました。」は--assumenoを指定したためです。
共通部分のインストール
各PHPのインストールに共通するRemiリポジトリを準備します。既にEPEL、Remi、CRBを設定している場合は、ここでの再インストールは不要です。
Remiをまだ設定していない場合は、以下の記事も参考にしてください。
CentOS Stream 9 の初期設定(Remi)
EPELとRemiの導入状況を確認します。
rpm -q epel-release remi-release
未導入の場合はインストールします。
dnf install epel-release
dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
CRBリポジトリを確認します。CentOS Stream 9では依存パッケージの取得に必要になるため、有効にしておきます。
dnf repolist --enabled
この環境ではCRBが有効です。無効の場合のみdnf-plugins-coreを導入し、dnf config-manager --set-enabled crbで有効にします。
dnf install dnf-plugins-core
Remiリポジトリ定義パッケージの更新時にremi-safe.repo.rpmnewが作成されました。既存の設定ではremi-safeが無効になっているため、必要な操作時だけ--enablerepo=remi-safeを指定して利用します。
今回のSCL版PHPは、php74、php80、php81、php82、php83、php84、php85のように、バージョン番号を含む別名のパッケージとして管理します。依存関係に含まれる共通パッケージはDNFが必要に応じて追加します。
標準PHPの実行ファイルを上書きするphp74-syspaths、php80-syspaths、php81-syspaths、php82-syspaths、php83-syspaths、php84-syspaths、php85-syspathsは使用しません。
ApacheからPHPを実行する方法は、mod_fcgidとsuEXECを使用します。VirtualHostの具体的な設定例は次のとおりです。ドメイン名、実行ユーザー、ディレクトリは、サイトの環境に応じて読み替えます。
<Directory "/home/example/public_html">
Options +ExecCGI
AddHandler fcgid-script .php
FCGIWrapper /home/example/cgi-bin/php-cgi .php
</Directory>
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot "/home/example/public_html"
SuexecUserGroup example example
</VirtualHost>
CGIラッパー/home/example/cgi-bin/php-cgiには、そのサイトで利用するPHPのCGI実行ファイルを指定します。既存のsuEXECの所有者・実行権限の条件を維持し、変更前にラッパーをバックアップします。既存のVirtualHostを無条件で上記設定に置き換えるものではありません。
旧バージョンの脆弱性対応状況を確認
PHP 7.4・8.0・8.1を導入する場合は、今回のCVEに対する緩和策を含むRemi版か確認します。2026年10月27日時点で確認されたバージョンは、7.4.33-31、8.0.30-21、8.1.34-6です。
dnf --enablerepo=remi-safe --assumeno install php74-php-cli php80-php-cli php81-php-cli
RPMの変更履歴に2件のCVEが記載されていることも確認します。
for version in 74 80 81; do
echo "### PHP ${version}"
dnf --enablerepo=remi-safe repoquery --latest-limit=1 --changelogs "php${version}-php-common" | grep -B 4 -A 1 'CVE-2026-109618'
done
Remi公式では、これらを完全な修正(fix)ではなく緩和策(mitigation)として案内しています。詳細:PHP 7.4、PHP 8.0、PHP 8.1。
以下は各バージョン単独の手順です。必要なPHPの章だけを実行します。拡張機能やphp.iniもバージョンごとに独立して設定します。
PHP 8.5を導入
PHP 8.5を、既存の標準PHPとは別にインストールします。2026年10月27日時点で導入されたバージョンは8.5.12です。
インストール
まずは依存関係を確認します。--assumenoを指定しているため、ここではインストールされません。
dnf --enablerepo=remi-safe --assumeno install php85-php-cli
メタデータの期限切れの最終確認: 0:36:59 前の 2026年10月27日 02時50分46秒 に実施しました。
依存関係が解決しました。
=========================================================================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
=========================================================================================================================================================================================
インストール:
php85-php-cli x86_64 8.5.12-1.el9.remi remi-safe 6.2 M
依存関係のインストール:
capstone x86_64 4.0.2-12.el9 appstream 755 k
environment-modules x86_64 5.3.0-3.el9 baseos 586 k
php85-php-common x86_64 8.5.12-1.el9.remi remi-safe 823 k
php85-runtime x86_64 8.5-1.el9.remi remi-safe 1.1 M
scl-utils x86_64 1:2.0.3-4.el9 appstream 37 k
tcl x86_64 1:8.6.10-7.el9 baseos 1.1 M
vim-filesystem noarch 2:8.2.2637-43.el9 baseos 16 k
トランザクションの概要
=========================================================================================================================================================================================
インストール 8 パッケージ
ダウンロードサイズの合計: 11 M
インストール後のサイズ: 59 M
操作が中断されました。
依存関係が解決したので、PHP 8.5のCLIとCGIをインストールします。
dnf --enablerepo=remi-safe install php85-php-cli
メタデータの期限切れの最終確認: 0:37:07 前の 2026年10月27日 02時50分46秒 に実施しました。
依存関係が解決しました。
=========================================================================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
=========================================================================================================================================================================================
インストール:
php85-php-cli x86_64 8.5.12-1.el9.remi remi-safe 6.2 M
依存関係のインストール:
capstone x86_64 4.0.2-12.el9 appstream 755 k
environment-modules x86_64 5.3.0-3.el9 baseos 586 k
php85-php-common x86_64 8.5.12-1.el9.remi remi-safe 823 k
php85-runtime x86_64 8.5-1.el9.remi remi-safe 1.1 M
scl-utils x86_64 1:2.0.3-4.el9 appstream 37 k
tcl x86_64 1:8.6.10-7.el9 baseos 1.1 M
vim-filesystem noarch 2:8.2.2637-43.el9 baseos 16 k
トランザクションの概要
=========================================================================================================================================================================================
インストール 8 パッケージ
ダウンロードサイズの合計: 11 M
インストール後のサイズ: 59 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/8): vim-filesystem-8.2.2637-43.el9.noarch.rpm 158 kB/s | 16 kB 00:00
(2/8): environment-modules-5.3.0-3.el9.x86_64.rpm 2.3 MB/s | 586 kB 00:00
(3/8): scl-utils-2.0.3-4.el9.x86_64.rpm 1.2 MB/s | 37 kB 00:00
(4/8): capstone-4.0.2-12.el9.x86_64.rpm 3.5 MB/s | 755 kB 00:00
(5/8): tcl-8.6.10-7.el9.x86_64.rpm 3.3 MB/s | 1.1 MB 00:00
(6/8): php85-php-common-8.5.12-1.el9.remi.x86_64.rpm 318 kB/s | 823 kB 00:02
(7/8): php85-runtime-8.5-1.el9.remi.x86_64.rpm 457 kB/s | 1.1 MB 00:02
(8/8): php85-php-cli-8.5.12-1.el9.remi.x86_64.rpm 1.4 MB/s | 6.2 MB 00:04
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計 1.8 MB/s | 11 MB 00:05
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
準備中 : 1/1
インストール中 : capstone-4.0.2-12.el9.x86_64 1/8
インストール中 : vim-filesystem-2:8.2.2637-43.el9.noarch 2/8
インストール中 : tcl-1:8.6.10-7.el9.x86_64 3/8
インストール中 : environment-modules-5.3.0-3.el9.x86_64 4/8
scriptletの実行中: environment-modules-5.3.0-3.el9.x86_64 4/8
インストール中 : scl-utils-1:2.0.3-4.el9.x86_64 5/8
インストール中 : php85-runtime-8.5-1.el9.remi.x86_64 6/8
scriptletの実行中: php85-runtime-8.5-1.el9.remi.x86_64 6/8
インストール中 : php85-php-common-8.5.12-1.el9.remi.x86_64 7/8
インストール中 : php85-php-cli-8.5.12-1.el9.remi.x86_64 8/8
scriptletの実行中: php85-php-cli-8.5.12-1.el9.remi.x86_64 8/8
検証中 : environment-modules-5.3.0-3.el9.x86_64 1/8
検証中 : tcl-1:8.6.10-7.el9.x86_64 2/8
検証中 : vim-filesystem-2:8.2.2637-43.el9.noarch 3/8
検証中 : capstone-4.0.2-12.el9.x86_64 4/8
検証中 : scl-utils-1:2.0.3-4.el9.x86_64 5/8
検証中 : php85-php-cli-8.5.12-1.el9.remi.x86_64 6/8
検証中 : php85-php-common-8.5.12-1.el9.remi.x86_64 7/8
検証中 : php85-runtime-8.5-1.el9.remi.x86_64 8/8
インストール済み:
capstone-4.0.2-12.el9.x86_64 environment-modules-5.3.0-3.el9.x86_64 php85-php-cli-8.5.12-1.el9.remi.x86_64 php85-php-common-8.5.12-1.el9.remi.x86_64
php85-runtime-8.5-1.el9.remi.x86_64 scl-utils-1:2.0.3-4.el9.x86_64 tcl-1:8.6.10-7.el9.x86_64 vim-filesystem-2:8.2.2637-43.el9.noarch
完了しました!
拡張機能のインストール
既存PHPで利用している主要な拡張機能に合わせて、必要な拡張機能をDNFで追加します。imagickとxmlrpcも含めて、まとめてインストールします。
dnf --enablerepo=remi-safe install \
php85-php-bcmath \
php85-php-gd \
php85-php-intl \
php85-php-mbstring \
php85-php-mysqlnd \
php85-php-pdo \
php85-php-process \
php85-php-xml \
php85-php-pecl-apcu \
php85-php-pecl-imagick \
php85-php-pecl-xmlrpc \
php85-php-pecl-zip
メタデータの期限切れの最終確認: 0:54:00 前の 2026年10月27日 02時50分46秒 に実施しました。
依存関係が解決しました。
=========================================================================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
=========================================================================================================================================================================================
インストール:
php85-php-bcmath x86_64 8.5.12-1.el9.remi remi-safe 50 k
php85-php-gd x86_64 8.5.12-1.el9.remi remi-safe 52 k
php85-php-intl x86_64 8.5.12-1.el9.remi remi-safe 192 k
php85-php-mbstring x86_64 8.5.12-1.el9.remi remi-safe 537 k
php85-php-mysqlnd x86_64 8.5.12-1.el9.remi remi-safe 151 k
php85-php-pdo x86_64 8.5.12-1.el9.remi remi-safe 98 k
php85-php-pecl-apcu x86_64 5.1.28-1.el9.remi remi-safe 72 k
php85-php-pecl-imagick x86_64 3.8.1-4.el9.remi remi-safe 138 k
php85-php-pecl-xmlrpc x86_64 1.0.0~rc3-10.el9.remi remi-safe 53 k
php85-php-pecl-zip x86_64 1.22.8-1.el9.remi remi-safe 61 k
php85-php-process x86_64 8.5.12-1.el9.remi remi-safe 46 k
php85-php-xml x86_64 8.5.12-1.el9.remi remi-safe 244 k
依存関係のインストール:
ImageMagick7-libs x86_64 1:7.1.2.34-1.el9.remi remi-safe 2.6 M
fftw-libs-double x86_64 3.3.8-14.el9 appstream 909 k
libzip x86_64 1.7.3-8.el9 appstream 62 k
弱い依存関係のインストール:
open-sans-fonts noarch 1.10-16.el9 appstream 472 k
トランザクションの概要
=========================================================================================================================================================================================
インストール 16 パッケージ
ダウンロードサイズの合計: 5.6 M
インストール後のサイズ: 19 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/16): libzip-1.7.3-8.el9.x86_64.rpm 499 kB/s | 62 kB 00:00
(2/16): open-sans-fonts-1.10-16.el9.noarch.rpm 2.1 MB/s | 472 kB 00:00
(3/16): fftw-libs-double-3.3.8-14.el9.x86_64.rpm 3.7 MB/s | 909 kB 00:00
(4/16): php85-php-bcmath-8.5.12-1.el9.remi.x86_64.rpm 39 kB/s | 50 kB 00:01
(5/16): php85-php-gd-8.5.12-1.el9.remi.x86_64.rpm 41 kB/s | 52 kB 00:01
(6/16): ImageMagick7-libs-7.1.2.34-1.el9.remi.x86_64.rpm 850 kB/s | 2.6 MB 00:03
(7/16): php85-php-intl-8.5.12-1.el9.remi.x86_64.rpm 112 kB/s | 192 kB 00:01
(8/16): php85-php-mbstring-8.5.12-1.el9.remi.x86_64.rpm 277 kB/s | 537 kB 00:01
(9/16): php85-php-mysqlnd-8.5.12-1.el9.remi.x86_64.rpm 544 kB/s | 151 kB 00:00
(10/16): php85-php-pdo-8.5.12-1.el9.remi.x86_64.rpm 364 kB/s | 98 kB 00:00
(11/16): php85-php-pecl-apcu-5.1.28-1.el9.remi.x86_64.rpm 274 kB/s | 72 kB 00:00
(12/16): php85-php-pecl-imagick-3.8.1-4.el9.remi.x86_64.rpm 515 kB/s | 138 kB 00:00
(13/16): php85-php-pecl-xmlrpc-1.0.0~rc3-10.el9.remi.x86_64.rpm 203 kB/s | 53 kB 00:00
(14/16): php85-php-pecl-zip-1.22.8-1.el9.remi.x86_64.rpm 234 kB/s | 61 kB 00:00
(15/16): php85-php-process-8.5.12-1.el9.remi.x86_64.rpm 178 kB/s | 46 kB 00:00
(16/16): php85-php-xml-8.5.12-1.el9.remi.x86_64.rpm 131 kB/s | 244 kB 00:01
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計 916 kB/s | 5.6 MB 00:06
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
準備中 : 1/1
インストール中 : php85-php-xml-8.5.12-1.el9.remi.x86_64 1/16
インストール中 : php85-php-pdo-8.5.12-1.el9.remi.x86_64 2/16
インストール中 : open-sans-fonts-1.10-16.el9.noarch 3/16
インストール中 : libzip-1.7.3-8.el9.x86_64 4/16
インストール中 : fftw-libs-double-3.3.8-14.el9.x86_64 5/16
scriptletの実行中: ImageMagick7-libs-1:7.1.2.34-1.el9.remi.x86_64 6/16
インストール中 : ImageMagick7-libs-1:7.1.2.34-1.el9.remi.x86_64 6/16
インストール中 : php85-php-pecl-imagick-3.8.1-4.el9.remi.x86_64 7/16
インストール中 : php85-php-mysqlnd-8.5.12-1.el9.remi.x86_64 8/16
インストール中 : php85-php-pecl-xmlrpc-1.0.0~rc3-10.el9.remi.x86_64 9/16
インストール中 : php85-php-process-8.5.12-1.el9.remi.x86_64 10/16
インストール中 : php85-php-pecl-zip-1.22.8-1.el9.remi.x86_64 11/16
インストール中 : php85-php-pecl-apcu-5.1.28-1.el9.remi.x86_64 12/16
インストール中 : php85-php-mbstring-8.5.12-1.el9.remi.x86_64 13/16
インストール中 : php85-php-intl-8.5.12-1.el9.remi.x86_64 14/16
インストール中 : php85-php-gd-8.5.12-1.el9.remi.x86_64 15/16
インストール中 : php85-php-bcmath-8.5.12-1.el9.remi.x86_64 16/16
scriptletの実行中: php85-php-bcmath-8.5.12-1.el9.remi.x86_64 16/16
検証中 : fftw-libs-double-3.3.8-14.el9.x86_64 1/16
検証中 : libzip-1.7.3-8.el9.x86_64 2/16
検証中 : open-sans-fonts-1.10-16.el9.noarch 3/16
検証中 : ImageMagick7-libs-1:7.1.2.34-1.el9.remi.x86_64 4/16
検証中 : php85-php-bcmath-8.5.12-1.el9.remi.x86_64 5/16
検証中 : php85-php-gd-8.5.12-1.el9.remi.x86_64 6/16
検証中 : php85-php-intl-8.5.12-1.el9.remi.x86_64 7/16
検証中 : php85-php-mbstring-8.5.12-1.el9.remi.x86_64 8/16
検証中 : php85-php-mysqlnd-8.5.12-1.el9.remi.x86_64 9/16
検証中 : php85-php-pdo-8.5.12-1.el9.remi.x86_64 10/16
検証中 : php85-php-pecl-apcu-5.1.28-1.el9.remi.x86_64 11/16
検証中 : php85-php-pecl-imagick-3.8.1-4.el9.remi.x86_64 12/16
検証中 : php85-php-pecl-xmlrpc-1.0.0~rc3-10.el9.remi.x86_64 13/16
検証中 : php85-php-pecl-zip-1.22.8-1.el9.remi.x86_64 14/16
検証中 : php85-php-process-8.5.12-1.el9.remi.x86_64 15/16
検証中 : php85-php-xml-8.5.12-1.el9.remi.x86_64 16/16
インストール済み:
ImageMagick7-libs-1:7.1.2.34-1.el9.remi.x86_64 fftw-libs-double-3.3.8-14.el9.x86_64 libzip-1.7.3-8.el9.x86_64
open-sans-fonts-1.10-16.el9.noarch php85-php-bcmath-8.5.12-1.el9.remi.x86_64 php85-php-gd-8.5.12-1.el9.remi.x86_64
php85-php-intl-8.5.12-1.el9.remi.x86_64 php85-php-mbstring-8.5.12-1.el9.remi.x86_64 php85-php-mysqlnd-8.5.12-1.el9.remi.x86_64
php85-php-pdo-8.5.12-1.el9.remi.x86_64 php85-php-pecl-apcu-5.1.28-1.el9.remi.x86_64 php85-php-pecl-imagick-3.8.1-4.el9.remi.x86_64
php85-php-pecl-xmlrpc-1.0.0~rc3-10.el9.remi.x86_64 php85-php-pecl-zip-1.22.8-1.el9.remi.x86_64 php85-php-process-8.5.12-1.el9.remi.x86_64
php85-php-xml-8.5.12-1.el9.remi.x86_64
完了しました!
PHP 8.5のOPcacheはphp85-php-commonに含まれており、上記コマンドでphp85-php-opcacheを個別に指定する必要はありません。
バージョンと拡張機能の確認
標準PHPとSCL版PHPが独立していることを確認します。
php -v
PHP 8.1.34 (cli) (built: Jul 30 2026 12:04:32) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.34, Copyright (c) Zend Technologies
with Zend OPcache v8.1.34, Copyright (c), by Zend Technologies
php85 -v
PHP 8.5.12 (cli) (built: Oct 19 2026 17:02:46) (NTS gcc x86_64)
Copyright (c) The PHP Group
Built by Remi's RPM repository <https://rpms.remirepo.net/> #StandWithUkraine #NoAI
Zend Engine v4.5.12, Copyright (c) Zend Technologies
with Zend OPcache v8.5.12, Copyright (c), by Zend Technologies
php85-cgi -v
PHP 8.5.12 (cgi-fcgi) (built: Oct 19 2026 17:02:46) (NTS gcc x86_64)
Copyright (c) The PHP Group
Built by Remi's RPM repository <https://rpms.remirepo.net/> #StandWithUkraine #NoAI
Zend Engine v4.5.12, Copyright (c) Zend Technologies
with Zend OPcache v8.5.12, Copyright (c), by Zend Technologies
追加されたモジュールをCLIとCGIの両方で確認します。
php85 -m
[PHP Modules]
apcu
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
imagick
intl
json
lexbor
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
random
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
uri
xml
xmlreader
xmlrpc
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
php85-cgi -m
[PHP Modules]
apcu
bcmath
bz2
calendar
cgi-fcgi
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
imagick
intl
json
lexbor
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
random
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
uri
xml
xmlreader
xmlrpc
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
php.iniの確認と設定
PHP 8.5は独立した設定ファイルを読み込みます。既存の標準PHPが参照する/etc/php.iniは変更しません。
php85 --ini
Configuration File (php.ini) Path: "/etc/opt/remi/php85"
Loaded Configuration File: "/etc/opt/remi/php85/php.ini"
Scan for additional .ini files in: "/etc/opt/remi/php85/php.d"
Additional .ini files parsed: /etc/opt/remi/php85/php.d/10-opcache.ini,
/etc/opt/remi/php85/php.d/20-bcmath.ini,
/etc/opt/remi/php85/php.d/20-bz2.ini,
/etc/opt/remi/php85/php.d/20-calendar.ini,
/etc/opt/remi/php85/php.d/20-ctype.ini,
/etc/opt/remi/php85/php.d/20-curl.ini,
/etc/opt/remi/php85/php.d/20-dom.ini,
/etc/opt/remi/php85/php.d/20-exif.ini,
/etc/opt/remi/php85/php.d/20-fileinfo.ini,
/etc/opt/remi/php85/php.d/20-ftp.ini,
/etc/opt/remi/php85/php.d/20-gd.ini,
/etc/opt/remi/php85/php.d/20-gettext.ini,
/etc/opt/remi/php85/php.d/20-iconv.ini,
/etc/opt/remi/php85/php.d/20-intl.ini,
/etc/opt/remi/php85/php.d/20-mbstring.ini,
/etc/opt/remi/php85/php.d/20-mysqlnd.ini,
/etc/opt/remi/php85/php.d/20-pdo.ini,
/etc/opt/remi/php85/php.d/20-phar.ini,
/etc/opt/remi/php85/php.d/20-posix.ini,
/etc/opt/remi/php85/php.d/20-shmop.ini,
/etc/opt/remi/php85/php.d/20-simplexml.ini,
/etc/opt/remi/php85/php.d/20-sqlite3.ini,
/etc/opt/remi/php85/php.d/20-sysvmsg.ini,
/etc/opt/remi/php85/php.d/20-sysvsem.ini,
/etc/opt/remi/php85/php.d/20-sysvshm.ini,
/etc/opt/remi/php85/php.d/20-tokenizer.ini,
/etc/opt/remi/php85/php.d/20-xml.ini,
/etc/opt/remi/php85/php.d/20-xmlwriter.ini,
/etc/opt/remi/php85/php.d/20-xsl.ini,
/etc/opt/remi/php85/php.d/30-mysqli.ini,
/etc/opt/remi/php85/php.d/30-pdo_mysql.ini,
/etc/opt/remi/php85/php.d/30-pdo_sqlite.ini,
/etc/opt/remi/php85/php.d/30-xmlreader.ini,
/etc/opt/remi/php85/php.d/30-xmlrpc.ini,
/etc/opt/remi/php85/php.d/30-zip.ini,
/etc/opt/remi/php85/php.d/40-apcu.ini,
/etc/opt/remi/php85/php.d/40-imagick.ini
PHP 8.5専用の設定ファイルを変更します。標準PHPの/etc/php.iniは変更しません。
タイムゾーンを Asia/Tokyo に変更します。従来の記事と同じように、sed -iで書き換えます。
# タイムゾーンを Asia/Tokyo に変更
sed -i -e "s|^[;[:space:]]*date\.timezone[[:space:]]*=.*$|date.timezone = Asia/Tokyo|g" /etc/opt/remi/php85/php.ini
OPcacheの設定ファイルを確認し、既存の設定項目のコメントアウトを解除します。設定値自体はパッケージ側に記載された値を使用します。
# OPcacheの設定(既存の設定値を使用)
sed -i -e "s/^;opcache.memory_consumption=/opcache.memory_consumption=/g" /etc/opt/remi/php85/php.d/10-opcache.ini
sed -i -e "s/^;opcache.interned_strings_buffer=/opcache.interned_strings_buffer=/g" /etc/opt/remi/php85/php.d/10-opcache.ini
sed -i -e "s/^;opcache.max_accelerated_files=/opcache.max_accelerated_files=/g" /etc/opt/remi/php85/php.d/10-opcache.ini
sed -i -e "s/^;opcache.revalidate_freq=/opcache.revalidate_freq=/g" /etc/opt/remi/php85/php.d/10-opcache.ini
sed -i -e "s/^;opcache.enable_cli=/opcache.enable_cli=/g" /etc/opt/remi/php85/php.d/10-opcache.ini
opcache.fast_shutdownはPHP 7.2以降で削除されているため設定しません。opcache.enable_cliはコメントを解除するだけで、値を1に変更するものではありません。
MySQLのUNIXソケットを使用する場合は、ソケットの場所を確認してから設定します。以下は/var/lib/mysql/mysql.sockの場合の例です。実際の位置が異なる場合は適宜書き換えてください。
# MySQLソケットの位置を確認
ls -l /var/lib/mysql/mysql.sock
# MySQLソケットの設定
sed -i -e "s|^[;[:space:]]*mysqli\.default_socket[[:space:]]*=.*$|mysqli.default_socket = /var/lib/mysql/mysql.sock|g" /etc/opt/remi/php85/php.ini
sed -i -e "s|^[;[:space:]]*pdo_mysql\.default_socket[[:space:]]*=.*$|pdo_mysql.default_socket = /var/lib/mysql/mysql.sock|g" /etc/opt/remi/php85/php.ini
旧MySQL拡張向けのmysql.default_socketは、PHP 8系では使用しません。
書き換えた内容を確認します。grepではファイルの設定を、php -iではCLIで実際に反映されている値を確認します。
grep -E '^[;[:space:]]*(date\.timezone|mysqli\.default_socket|pdo_mysql\.default_socket)[[:space:]]*=' /etc/opt/remi/php85/php.ini
date.timezone = Asia/Tokyo
pdo_mysql.default_socket = /var/lib/mysql/mysql.sock
mysqli.default_socket = /var/lib/mysql/mysql.sock
grep -E '^[;[:space:]]*opcache\.(memory_consumption|interned_strings_buffer|max_accelerated_files|revalidate_freq|enable_cli)=' /etc/opt/remi/php85/php.d/10-opcache.ini
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2
php85 -i | grep -E '^(date\.timezone|mysqli\.default_socket|pdo_mysql\.default_socket|opcache\.memory_consumption|opcache\.interned_strings_buffer|opcache\.max_accelerated_files|opcache\.revalidate_freq|opcache\.enable_cli) =>'
date.timezone => Asia/Tokyo => Asia/Tokyo
mysqli.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock
pdo_mysql.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock
opcache.enable_cli => On => On
opcache.interned_strings_buffer => 8 => 8
opcache.max_accelerated_files => 10000 => 10000
opcache.memory_consumption => 128 => 128
opcache.revalidate_freq => 2 => 2
GDの対応形式を確認
GDで利用できる画像フォーマットを確認します。
php85 -r 'print_r(gd_info());'
Array
(
[GD Version] => 2.3.3
[FreeType Support] => 1
[FreeType Linkage] => with freetype
[GIF Read Support] => 1
[GIF Create Support] => 1
[JPEG Support] => 1
[PNG Support] => 1
[WBMP Support] => 1
[XPM Support] => 1
[XBM Support] => 1
[WebP Support] => 1
[BMP Support] => 1
[AVIF Support] => 1
[TGA Read Support] => 1
[JIS-mapped Japanese Font Support] =>
)
CGIラッパーの設定
PHP 8.5を利用するサイトでは、既存のCGIラッパーをバックアップしたうえで、実行先を次のように指定します。サイトごとの実行ユーザーとsuEXECの権限条件を維持してください。
#!/bin/sh
exec /usr/bin/php85-cgi
CLIとCGIの導入確認だけでは、WebサイトのPHPが8.5に切り替わったことにはなりません。Webからの確認手順は後述します。
PHP 8.4を導入
PHP 8.4だけを追加する場合は、この章を実行します。2026年10月27日時点のRemiの提供バージョンはPHP 8.4.27です。
インストール
まずはパッケージの依存関係を確認します。
dnf --enablerepo=remi-safe --assumeno install php84-php-cli
問題がなければインストールします。CLI版とCGI版の実行ファイルが追加されます。
dnf --enablerepo=remi-safe install php84-php-cli
拡張機能のインストール
PHP 8.5で導入した拡張機能を基本に、同じ用途の機能を追加します。OPcacheはこのバージョンでは専用パッケージを指定します。必要な拡張機能だけを選択できます。
はじめに、利用するリポジトリとパッケージの依存関係を確認します。
dnf --enablerepo=remi-safe --assumeno install \
php84-php-bcmath \
php84-php-gd \
php84-php-intl \
php84-php-mbstring \
php84-php-mysqlnd \
php84-php-pdo \
php84-php-process \
php84-php-xml \
php84-php-pecl-apcu \
php84-php-pecl-imagick \
php84-php-pecl-xmlrpc \
php84-php-pecl-zip \
php84-php-opcache
パッケージの依存関係を確認したら、拡張機能をインストールします。
dnf --enablerepo=remi-safe install \
php84-php-bcmath \
php84-php-gd \
php84-php-intl \
php84-php-mbstring \
php84-php-mysqlnd \
php84-php-pdo \
php84-php-process \
php84-php-xml \
php84-php-pecl-apcu \
php84-php-pecl-imagick \
php84-php-pecl-xmlrpc \
php84-php-pecl-zip \
php84-php-opcache
XML-RPCやimagickはサイトの利用状況に応じて省くこともできます。PHP 8.5と同名の拡張機能でも、パッケージや依存関係の差があり得るため、DNFの結果を確認します。
バージョンと拡張機能の確認
php84 -v
php84-cgi -v
php84 -m
php84-cgi -m
php84 -r 'print_r(gd_info());'
php.iniの設定
PHP 8.4のphp.iniは/etc/opt/remi/php84/php.iniです。設定ファイルの場所を確認します。
php84 --ini
PHP 8.4専用の設定ファイルを変更します。標準PHPの/etc/php.iniは変更しません。
タイムゾーンを Asia/Tokyo に変更します。従来の記事と同じように、sed -iで書き換えます。
# タイムゾーンを Asia/Tokyo に変更
sed -i -e "s|^[;[:space:]]*date\.timezone[[:space:]]*=.*$|date.timezone = Asia/Tokyo|g" /etc/opt/remi/php84/php.ini
OPcacheの設定ファイルを確認し、既存の設定項目のコメントアウトを解除します。設定値自体はパッケージ側に記載された値を使用します。
# OPcacheの設定(既存の設定値を使用)
sed -i -e "s/^;opcache.memory_consumption=/opcache.memory_consumption=/g" /etc/opt/remi/php84/php.d/10-opcache.ini
sed -i -e "s/^;opcache.interned_strings_buffer=/opcache.interned_strings_buffer=/g" /etc/opt/remi/php84/php.d/10-opcache.ini
sed -i -e "s/^;opcache.max_accelerated_files=/opcache.max_accelerated_files=/g" /etc/opt/remi/php84/php.d/10-opcache.ini
sed -i -e "s/^;opcache.revalidate_freq=/opcache.revalidate_freq=/g" /etc/opt/remi/php84/php.d/10-opcache.ini
sed -i -e "s/^;opcache.enable_cli=/opcache.enable_cli=/g" /etc/opt/remi/php84/php.d/10-opcache.ini
opcache.fast_shutdownはPHP 7.2以降で削除されているため設定しません。opcache.enable_cliはコメントを解除するだけで、値を1に変更するものではありません。
MySQLのUNIXソケットを使用する場合は、ソケットの場所を確認してから設定します。以下は/var/lib/mysql/mysql.sockの場合の例です。実際の位置が異なる場合は適宜書き換えてください。
# MySQLソケットの位置を確認
ls -l /var/lib/mysql/mysql.sock
# MySQLソケットの設定
sed -i -e "s|^[;[:space:]]*mysqli\.default_socket[[:space:]]*=.*$|mysqli.default_socket = /var/lib/mysql/mysql.sock|g" /etc/opt/remi/php84/php.ini
sed -i -e "s|^[;[:space:]]*pdo_mysql\.default_socket[[:space:]]*=.*$|pdo_mysql.default_socket = /var/lib/mysql/mysql.sock|g" /etc/opt/remi/php84/php.ini
旧MySQL拡張向けのmysql.default_socketは、PHP 8系では使用しません。
書き換えた内容を確認します。grepではファイルの設定を、php -iではCLIで実際に反映されている値を確認します。
# php.iniの設定を確認
grep -E '^[;[:space:]]*(date\.timezone|mysqli\.default_socket|pdo_mysql\.default_socket)[[:space:]]*=' /etc/opt/remi/php84/php.ini
# OPcacheの設定を確認
grep -E '^[;[:space:]]*opcache\.(memory_consumption|interned_strings_buffer|max_accelerated_files|revalidate_freq|enable_cli)=' /etc/opt/remi/php84/php.d/10-opcache.ini
# 実際の設定値を確認
php84 -i | grep -E '^(date\.timezone|mysqli\.default_socket|pdo_mysql\.default_socket|opcache\.memory_consumption|opcache\.interned_strings_buffer|opcache\.max_accelerated_files|opcache\.revalidate_freq|opcache\.enable_cli) =>'
CGIラッパーの設定
PHP 8.4を使用するサイトのCGIラッパーを、次の内容にします。CGIラッパーの所有者やパーミッションはsuEXECの制約に合わせます。
#!/bin/sh
exec /usr/bin/php84-cgi
確認
標準PHPが変更されていないこと、PHP 8.4のCGIが呼び出せることを確認します。Webで実際に使われるPHPの確認方法は、後述の「動作確認」を参照してください。
php -v
php84-cgi -v
PHP 8.3を導入
PHP 8.3だけを追加する場合は、この章を実行します。2026年10月27日時点のRemiの提供バージョンはPHP 8.3.36です。
インストール
まずはパッケージの依存関係を確認します。
dnf --enablerepo=remi-safe --assumeno install php83-php-cli
問題がなければインストールします。CLI版とCGI版の実行ファイルが追加されます。
dnf --enablerepo=remi-safe install php83-php-cli
拡張機能のインストール
PHP 8.5で導入した拡張機能を基本に、同じ用途の機能を追加します。OPcacheはこのバージョンでは専用パッケージを指定します。必要な拡張機能だけを選択できます。
はじめに、利用するリポジトリとパッケージの依存関係を確認します。
dnf --enablerepo=remi-safe --assumeno install \
php83-php-bcmath \
php83-php-gd \
php83-php-intl \
php83-php-mbstring \
php83-php-mysqlnd \
php83-php-pdo \
php83-php-process \
php83-php-xml \
php83-php-pecl-apcu \
php83-php-pecl-imagick \
php83-php-pecl-xmlrpc \
php83-php-pecl-zip \
php83-php-opcache
パッケージの依存関係を確認したら、拡張機能をインストールします。
dnf --enablerepo=remi-safe install \
php83-php-bcmath \
php83-php-gd \
php83-php-intl \
php83-php-mbstring \
php83-php-mysqlnd \
php83-php-pdo \
php83-php-process \
php83-php-xml \
php83-php-pecl-apcu \
php83-php-pecl-imagick \
php83-php-pecl-xmlrpc \
php83-php-pecl-zip \
php83-php-opcache
XML-RPCやimagickはサイトの利用状況に応じて省くこともできます。PHP 8.5と同名の拡張機能でも、パッケージや依存関係の差があり得るため、DNFの結果を確認します。
バージョンと拡張機能の確認
php83 -v
php83-cgi -v
php83 -m
php83-cgi -m
php83 -r 'print_r(gd_info());'
php.iniの設定
PHP 8.3のphp.iniは/etc/opt/remi/php83/php.iniです。設定ファイルの場所を確認します。
php83 --ini
PHP 8.3専用の設定ファイルを変更します。標準PHPの/etc/php.iniは変更しません。
タイムゾーンを Asia/Tokyo に変更します。従来の記事と同じように、sed -iで書き換えます。
# タイムゾーンを Asia/Tokyo に変更
sed -i -e "s|^[;[:space:]]*date\.timezone[[:space:]]*=.*$|date.timezone = Asia/Tokyo|g" /etc/opt/remi/php83/php.ini
OPcacheの設定ファイルを確認し、既存の設定項目のコメントアウトを解除します。設定値自体はパッケージ側に記載された値を使用します。
# OPcacheの設定(既存の設定値を使用)
sed -i -e "s/^;opcache.memory_consumption=/opcache.memory_consumption=/g" /etc/opt/remi/php83/php.d/10-opcache.ini
sed -i -e "s/^;opcache.interned_strings_buffer=/opcache.interned_strings_buffer=/g" /etc/opt/remi/php83/php.d/10-opcache.ini
sed -i -e "s/^;opcache.max_accelerated_files=/opcache.max_accelerated_files=/g" /etc/opt/remi/php83/php.d/10-opcache.ini
sed -i -e "s/^;opcache.revalidate_freq=/opcache.revalidate_freq=/g" /etc/opt/remi/php83/php.d/10-opcache.ini
sed -i -e "s/^;opcache.enable_cli=/opcache.enable_cli=/g" /etc/opt/remi/php83/php.d/10-opcache.ini
opcache.fast_shutdownはPHP 7.2以降で削除されているため設定しません。opcache.enable_cliはコメントを解除するだけで、値を1に変更するものではありません。
MySQLのUNIXソケットを使用する場合は、ソケットの場所を確認してから設定します。以下は/var/lib/mysql/mysql.sockの場合の例です。実際の位置が異なる場合は適宜書き換えてください。
# MySQLソケットの位置を確認
ls -l /var/lib/mysql/mysql.sock
# MySQLソケットの設定
sed -i -e "s|^[;[:space:]]*mysqli\.default_socket[[:space:]]*=.*$|mysqli.default_socket = /var/lib/mysql/mysql.sock|g" /etc/opt/remi/php83/php.ini
sed -i -e "s|^[;[:space:]]*pdo_mysql\.default_socket[[:space:]]*=.*$|pdo_mysql.default_socket = /var/lib/mysql/mysql.sock|g" /etc/opt/remi/php83/php.ini
旧MySQL拡張向けのmysql.default_socketは、PHP 8系では使用しません。
書き換えた内容を確認します。grepではファイルの設定を、php -iではCLIで実際に反映されている値を確認します。
# php.iniの設定を確認
grep -E '^[;[:space:]]*(date\.timezone|mysqli\.default_socket|pdo_mysql\.default_socket)[[:space:]]*=' /etc/opt/remi/php83/php.ini
# OPcacheの設定を確認
grep -E '^[;[:space:]]*opcache\.(memory_consumption|interned_strings_buffer|max_accelerated_files|revalidate_freq|enable_cli)=' /etc/opt/remi/php83/php.d/10-opcache.ini
# 実際の設定値を確認
php83 -i | grep -E '^(date\.timezone|mysqli\.default_socket|pdo_mysql\.default_socket|opcache\.memory_consumption|opcache\.interned_strings_buffer|opcache\.max_accelerated_files|opcache\.revalidate_freq|opcache\.enable_cli) =>'
CGIラッパーの設定
PHP 8.3を使用するサイトのCGIラッパーを、次の内容にします。CGIラッパーの所有者やパーミッションはsuEXECの制約に合わせます。
#!/bin/sh
exec /usr/bin/php83-cgi
確認
標準PHPが変更されていないこと、PHP 8.3のCGIが呼び出せることを確認します。Webで実際に使われるPHPの確認方法は、後述の「動作確認」を参照してください。
php -v
php83-cgi -v
PHP 8.2を導入
PHP 8.2だけを追加する場合は、この章を実行します。2026年10月27日時点のRemiの提供バージョンはPHP 8.2.35です。
インストール
まずはパッケージの依存関係を確認します。
dnf --enablerepo=remi-safe --assumeno install php82-php-cli
問題がなければインストールします。CLI版とCGI版の実行ファイルが追加されます。
dnf --enablerepo=remi-safe install php82-php-cli
拡張機能のインストール
PHP 8.5で導入した拡張機能を基本に、同じ用途の機能を追加します。OPcacheはこのバージョンでは専用パッケージを指定します。必要な拡張機能だけを選択できます。
はじめに、利用するリポジトリとパッケージの依存関係を確認します。
dnf --enablerepo=remi-safe --assumeno install \
php82-php-bcmath \
php82-php-gd \
php82-php-intl \
php82-php-mbstring \
php82-php-mysqlnd \
php82-php-pdo \
php82-php-process \
php82-php-xml \
php82-php-pecl-apcu \
php82-php-pecl-imagick \
php82-php-pecl-xmlrpc \
php82-php-pecl-zip \
php82-php-opcache
パッケージの依存関係を確認したら、拡張機能をインストールします。
dnf --enablerepo=remi-safe install \
php82-php-bcmath \
php82-php-gd \
php82-php-intl \
php82-php-mbstring \
php82-php-mysqlnd \
php82-php-pdo \
php82-php-process \
php82-php-xml \
php82-php-pecl-apcu \
php82-php-pecl-imagick \
php82-php-pecl-xmlrpc \
php82-php-pecl-zip \
php82-php-opcache
XML-RPCやimagickはサイトの利用状況に応じて省くこともできます。PHP 8.5と同名の拡張機能でも、パッケージや依存関係の差があり得るため、DNFの結果を確認します。
バージョンと拡張機能の確認
php82 -v
php82-cgi -v
php82 -m
php82-cgi -m
php82 -r 'print_r(gd_info());'
php.iniの設定
PHP 8.2のphp.iniは/etc/opt/remi/php82/php.iniです。設定ファイルの場所を確認します。
php82 --ini
PHP 8.2専用の設定ファイルを変更します。標準PHPの/etc/php.iniは変更しません。
タイムゾーンを Asia/Tokyo に変更します。従来の記事と同じように、sed -iで書き換えます。
# タイムゾーンを Asia/Tokyo に変更
sed -i -e "s|^[;[:space:]]*date\.timezone[[:space:]]*=.*$|date.timezone = Asia/Tokyo|g" /etc/opt/remi/php82/php.ini
OPcacheの設定ファイルを確認し、既存の設定項目のコメントアウトを解除します。設定値自体はパッケージ側に記載された値を使用します。
# OPcacheの設定(既存の設定値を使用)
sed -i -e "s/^;opcache.memory_consumption=/opcache.memory_consumption=/g" /etc/opt/remi/php82/php.d/10-opcache.ini
sed -i -e "s/^;opcache.interned_strings_buffer=/opcache.interned_strings_buffer=/g" /etc/opt/remi/php82/php.d/10-opcache.ini
sed -i -e "s/^;opcache.max_accelerated_files=/opcache.max_accelerated_files=/g" /etc/opt/remi/php82/php.d/10-opcache.ini
sed -i -e "s/^;opcache.revalidate_freq=/opcache.revalidate_freq=/g" /etc/opt/remi/php82/php.d/10-opcache.ini
sed -i -e "s/^;opcache.enable_cli=/opcache.enable_cli=/g" /etc/opt/remi/php82/php.d/10-opcache.ini
opcache.fast_shutdownはPHP 7.2以降で削除されているため設定しません。opcache.enable_cliはコメントを解除するだけで、値を1に変更するものではありません。
MySQLのUNIXソケットを使用する場合は、ソケットの場所を確認してから設定します。以下は/var/lib/mysql/mysql.sockの場合の例です。実際の位置が異なる場合は適宜書き換えてください。
# MySQLソケットの位置を確認
ls -l /var/lib/mysql/mysql.sock
# MySQLソケットの設定
sed -i -e "s|^[;[:space:]]*mysqli\.default_socket[[:space:]]*=.*$|mysqli.default_socket = /var/lib/mysql/mysql.sock|g" /etc/opt/remi/php82/php.ini
sed -i -e "s|^[;[:space:]]*pdo_mysql\.default_socket[[:space:]]*=.*$|pdo_mysql.default_socket = /var/lib/mysql/mysql.sock|g" /etc/opt/remi/php82/php.ini
旧MySQL拡張向けのmysql.default_socketは、PHP 8系では使用しません。
書き換えた内容を確認します。grepではファイルの設定を、php -iではCLIで実際に反映されている値を確認します。
# php.iniの設定を確認
grep -E '^[;[:space:]]*(date\.timezone|mysqli\.default_socket|pdo_mysql\.default_socket)[[:space:]]*=' /etc/opt/remi/php82/php.ini
# OPcacheの設定を確認
grep -E '^[;[:space:]]*opcache\.(memory_consumption|interned_strings_buffer|max_accelerated_files|revalidate_freq|enable_cli)=' /etc/opt/remi/php82/php.d/10-opcache.ini
# 実際の設定値を確認
php82 -i | grep -E '^(date\.timezone|mysqli\.default_socket|pdo_mysql\.default_socket|opcache\.memory_consumption|opcache\.interned_strings_buffer|opcache\.max_accelerated_files|opcache\.revalidate_freq|opcache\.enable_cli) =>'
CGIラッパーの設定
PHP 8.2を使用するサイトのCGIラッパーを、次の内容にします。CGIラッパーの所有者やパーミッションはsuEXECの制約に合わせます。
#!/bin/sh
exec /usr/bin/php82-cgi
確認
標準PHPが変更されていないこと、PHP 8.2のCGIが呼び出せることを確認します。Webで実際に使われるPHPの確認方法は、後述の「動作確認」を参照してください。
php -v
php82-cgi -v
PHP 8.2の公式セキュリティサポートは2026年12月31日までです。互換性確認や移行用途を中心に使用し、長期運用する場合はサポート期間内のバージョンへの移行を検討します。
PHP 8.1を導入
PHP 8.1をRemiのSCL版として追加します。既存のModular版PHP 8.1は削除せずに残せます。今回の脆弱性への緩和策を含むRPMは8.1.34-6です。PHP公式のサポートは終了しているため、常用する場合は残るセキュリティリスクを評価し、新しいPHPへの移行を優先してください。
インストール
まず、パッケージのバージョンと依存関係を確認します。--assumenoのため、ここではインストールしません。
dnf --enablerepo=remi-safe --assumeno install php81-php-cli
インストール候補のバージョンとRPMの更新履歴を確認し、今回の緩和策を含むことを確かめたうえでインストールします。既存のphpコマンドは変更しません。
dnf --enablerepo=remi-safe install php81-php-cli
拡張機能のインストール
PHP 8.5と同じ用途の拡張機能を基本構成として追加します。XML-RPCなど、PHPのバージョンによってパッケージ名が異なります。ImagickやZIPなど必要のない機能は省略できます。
まずはDNFの依存関係を確認します。
dnf --enablerepo=remi-safe --assumeno install \
php81-php-bcmath \
php81-php-gd \
php81-php-intl \
php81-php-mbstring \
php81-php-mysqlnd \
php81-php-pdo \
php81-php-process \
php81-php-xml \
php81-php-pecl-apcu \
php81-php-pecl-imagick \
php81-php-pecl-xmlrpc \
php81-php-pecl-zip \
php81-php-opcache
問題がなければ、同じパッケージをインストールします。
dnf --enablerepo=remi-safe install \
php81-php-bcmath \
php81-php-gd \
php81-php-intl \
php81-php-mbstring \
php81-php-mysqlnd \
php81-php-pdo \
php81-php-process \
php81-php-xml \
php81-php-pecl-apcu \
php81-php-pecl-imagick \
php81-php-pecl-xmlrpc \
php81-php-pecl-zip \
php81-php-opcache
パッケージ名や依存関係はRemiの更新により変わる場合があります。導入前の--assumenoで内容を確認します。
バージョンと拡張機能の確認
php81 -v
php81-cgi -v
php81 -m
php81-cgi -m
php81 --ini
php81 -r 'print_r(gd_info());'
php.iniの確認と設定
PHP 8.1の設定ファイルは/etc/opt/remi/php81/php.iniです。既存の標準PHPの/etc/php.iniとは別に管理されます。
タイムゾーンをAsia/Tokyoに変更します。
# タイムゾーンを Asia/Tokyo に変更
sed -i -e "s|^[;[:space:]]*date\.timezone[[:space:]]*=.*$|date.timezone = Asia/Tokyo|g" /etc/opt/remi/php81/php.ini
OPcacheは設定ファイルにある既存値のコメントを解除します。opcache.fast_shutdownはPHP 7.2以降で削除されたため使用しません。
# OPcacheの設定(既存の設定値を使用)
sed -i -e "s/^;opcache.memory_consumption=/opcache.memory_consumption=/g" /etc/opt/remi/php81/php.d/10-opcache.ini
sed -i -e "s/^;opcache.interned_strings_buffer=/opcache.interned_strings_buffer=/g" /etc/opt/remi/php81/php.d/10-opcache.ini
sed -i -e "s/^;opcache.max_accelerated_files=/opcache.max_accelerated_files=/g" /etc/opt/remi/php81/php.d/10-opcache.ini
sed -i -e "s/^;opcache.revalidate_freq=/opcache.revalidate_freq=/g" /etc/opt/remi/php81/php.d/10-opcache.ini
sed -i -e "s/^;opcache.enable_cli=/opcache.enable_cli=/g" /etc/opt/remi/php81/php.d/10-opcache.ini
MySQLのUNIXソケットを利用する場合は、その場所を確認します。以下は/var/lib/mysql/mysql.sockを使用する例です。
ls -l /var/lib/mysql/mysql.sock
# MySQLソケットの設定
sed -i -e "s|^[;[:space:]]*mysqli\.default_socket[[:space:]]*=.*$|mysqli.default_socket = /var/lib/mysql/mysql.sock|g" /etc/opt/remi/php81/php.ini
sed -i -e "s|^[;[:space:]]*pdo_mysql\.default_socket[[:space:]]*=.*$|pdo_mysql.default_socket = /var/lib/mysql/mysql.sock|g" /etc/opt/remi/php81/php.ini
設定を確認します。
grep -E '^[;[:space:]]*(date\.timezone|mysqli\.default_socket|pdo_mysql\.default_socket)[[:space:]]*=' /etc/opt/remi/php81/php.ini
grep -E '^[;[:space:]]*opcache\.(memory_consumption|interned_strings_buffer|max_accelerated_files|revalidate_freq|enable_cli)=' /etc/opt/remi/php81/php.d/10-opcache.ini
php81 -i | grep -E '^(date\.timezone|mysqli\.default_socket|pdo_mysql\.default_socket|opcache\.memory_consumption|opcache\.interned_strings_buffer|opcache\.max_accelerated_files|opcache\.revalidate_freq|opcache\.enable_cli) =>'
CGIラッパーの設定
PHP 8.1を使用するサイトでは、そのサイトのCGIラッパーの実行先を次のように指定します。suEXECで使用するユーザー、所有者、権限を維持してください。
#!/bin/sh
exec /usr/bin/php81-cgi
切り替え後は実際のWebアクセスでPHPのバージョンを確認します。確認方法は後述の「動作確認」を参照してください。
PHP 8.0を導入
PHP 8.0をRemiのSCL版として追加します。今回の脆弱性への緩和策を含むRPMは8.0.30-21です。PHP公式のサポートは終了しています。常用する場合は残るセキュリティリスクを評価し、新しいPHPへの移行を優先してください。
インストール
まず、パッケージのバージョンと依存関係を確認します。--assumenoのため、ここではインストールしません。
dnf --enablerepo=remi-safe --assumeno install php80-php-cli
インストール候補が8.0.30-21以上の対応RPMであることを確認し、問題がなければインストールします。既存のphpコマンドは変更しません。
dnf --enablerepo=remi-safe install php80-php-cli
拡張機能のインストール
PHP 8.5と同じ用途の拡張機能を基本構成として追加します。XML-RPCなど、PHPのバージョンによってパッケージ名が異なります。ImagickやZIPなど必要のない機能は省略できます。
まずはDNFの依存関係を確認します。
dnf --enablerepo=remi-safe --assumeno install \
php80-php-bcmath \
php80-php-gd \
php80-php-intl \
php80-php-mbstring \
php80-php-mysqlnd \
php80-php-pdo \
php80-php-process \
php80-php-xml \
php80-php-pecl-apcu \
php80-php-pecl-imagick \
php80-php-pecl-xmlrpc \
php80-php-pecl-zip \
php80-php-opcache
問題がなければ、同じパッケージをインストールします。
dnf --enablerepo=remi-safe install \
php80-php-bcmath \
php80-php-gd \
php80-php-intl \
php80-php-mbstring \
php80-php-mysqlnd \
php80-php-pdo \
php80-php-process \
php80-php-xml \
php80-php-pecl-apcu \
php80-php-pecl-imagick \
php80-php-pecl-xmlrpc \
php80-php-pecl-zip \
php80-php-opcache
パッケージ名や依存関係はRemiの更新により変わる場合があります。導入前の--assumenoで内容を確認します。
バージョンと拡張機能の確認
php80 -v
php80-cgi -v
php80 -m
php80-cgi -m
php80 --ini
php80 -r 'print_r(gd_info());'
php.iniの確認と設定
PHP 8.0の設定ファイルは/etc/opt/remi/php80/php.iniです。既存の標準PHPの/etc/php.iniとは別に管理されます。
タイムゾーンをAsia/Tokyoに変更します。
# タイムゾーンを Asia/Tokyo に変更
sed -i -e "s|^[;[:space:]]*date\.timezone[[:space:]]*=.*$|date.timezone = Asia/Tokyo|g" /etc/opt/remi/php80/php.ini
OPcacheは設定ファイルにある既存値のコメントを解除します。opcache.fast_shutdownはPHP 7.2以降で削除されたため使用しません。
# OPcacheの設定(既存の設定値を使用)
sed -i -e "s/^;opcache.memory_consumption=/opcache.memory_consumption=/g" /etc/opt/remi/php80/php.d/10-opcache.ini
sed -i -e "s/^;opcache.interned_strings_buffer=/opcache.interned_strings_buffer=/g" /etc/opt/remi/php80/php.d/10-opcache.ini
sed -i -e "s/^;opcache.max_accelerated_files=/opcache.max_accelerated_files=/g" /etc/opt/remi/php80/php.d/10-opcache.ini
sed -i -e "s/^;opcache.revalidate_freq=/opcache.revalidate_freq=/g" /etc/opt/remi/php80/php.d/10-opcache.ini
sed -i -e "s/^;opcache.enable_cli=/opcache.enable_cli=/g" /etc/opt/remi/php80/php.d/10-opcache.ini
MySQLのUNIXソケットを利用する場合は、その場所を確認します。以下は/var/lib/mysql/mysql.sockを使用する例です。
ls -l /var/lib/mysql/mysql.sock
# MySQLソケットの設定
sed -i -e "s|^[;[:space:]]*mysqli\.default_socket[[:space:]]*=.*$|mysqli.default_socket = /var/lib/mysql/mysql.sock|g" /etc/opt/remi/php80/php.ini
sed -i -e "s|^[;[:space:]]*pdo_mysql\.default_socket[[:space:]]*=.*$|pdo_mysql.default_socket = /var/lib/mysql/mysql.sock|g" /etc/opt/remi/php80/php.ini
設定を確認します。
grep -E '^[;[:space:]]*(date\.timezone|mysqli\.default_socket|pdo_mysql\.default_socket)[[:space:]]*=' /etc/opt/remi/php80/php.ini
grep -E '^[;[:space:]]*opcache\.(memory_consumption|interned_strings_buffer|max_accelerated_files|revalidate_freq|enable_cli)=' /etc/opt/remi/php80/php.d/10-opcache.ini
php80 -i | grep -E '^(date\.timezone|mysqli\.default_socket|pdo_mysql\.default_socket|opcache\.memory_consumption|opcache\.interned_strings_buffer|opcache\.max_accelerated_files|opcache\.revalidate_freq|opcache\.enable_cli) =>'
CGIラッパーの設定
PHP 8.0を使用するサイトでは、そのサイトのCGIラッパーの実行先を次のように指定します。suEXECで使用するユーザー、所有者、権限を維持してください。
#!/bin/sh
exec /usr/bin/php80-cgi
切り替え後は実際のWebアクセスでPHPのバージョンを確認します。確認方法は後述の「動作確認」を参照してください。
PHP 7.4を導入
PHP 7.4をRemiのSCL版として追加します。今回の脆弱性への緩和策を含むRPMは7.4.33-31です。PHP公式のサポートは終了しています。常用する場合は残るセキュリティリスクを評価し、新しいPHPへの移行を優先してください。
インストール
まず、パッケージのバージョンと依存関係を確認します。--assumenoのため、ここではインストールしません。
dnf --enablerepo=remi-safe --assumeno install php74-php-cli
インストール候補が7.4.33-31以上の対応RPMであることを確認し、問題がなければインストールします。既存のphpコマンドは変更しません。
dnf --enablerepo=remi-safe install php74-php-cli
拡張機能のインストール
PHP 8.5と同じ用途の拡張機能を基本構成として追加します。XML-RPCなど、PHPのバージョンによってパッケージ名が異なります。ImagickやZIPなど必要のない機能は省略できます。
まずはDNFの依存関係を確認します。
dnf --enablerepo=remi-safe --assumeno install \
php74-php-bcmath \
php74-php-gd \
php74-php-intl \
php74-php-mbstring \
php74-php-mysqlnd \
php74-php-pdo \
php74-php-process \
php74-php-xml \
php74-php-pecl-apcu \
php74-php-pecl-imagick \
php74-php-xmlrpc \
php74-php-pecl-zip \
php74-php-opcache
問題がなければ、同じパッケージをインストールします。
dnf --enablerepo=remi-safe install \
php74-php-bcmath \
php74-php-gd \
php74-php-intl \
php74-php-mbstring \
php74-php-mysqlnd \
php74-php-pdo \
php74-php-process \
php74-php-xml \
php74-php-pecl-apcu \
php74-php-pecl-imagick \
php74-php-xmlrpc \
php74-php-pecl-zip \
php74-php-opcache
パッケージ名や依存関係はRemiの更新により変わる場合があります。導入前の--assumenoで内容を確認します。
バージョンと拡張機能の確認
php74 -v
php74-cgi -v
php74 -m
php74-cgi -m
php74 --ini
php74 -r 'print_r(gd_info());'
php.iniの確認と設定
PHP 7.4の設定ファイルは/etc/opt/remi/php74/php.iniです。既存の標準PHPの/etc/php.iniとは別に管理されます。
タイムゾーンをAsia/Tokyoに変更します。
# タイムゾーンを Asia/Tokyo に変更
sed -i -e "s|^[;[:space:]]*date\.timezone[[:space:]]*=.*$|date.timezone = Asia/Tokyo|g" /etc/opt/remi/php74/php.ini
OPcacheは設定ファイルにある既存値のコメントを解除します。opcache.fast_shutdownはPHP 7.2以降で削除されたため使用しません。
# OPcacheの設定(既存の設定値を使用)
sed -i -e "s/^;opcache.memory_consumption=/opcache.memory_consumption=/g" /etc/opt/remi/php74/php.d/10-opcache.ini
sed -i -e "s/^;opcache.interned_strings_buffer=/opcache.interned_strings_buffer=/g" /etc/opt/remi/php74/php.d/10-opcache.ini
sed -i -e "s/^;opcache.max_accelerated_files=/opcache.max_accelerated_files=/g" /etc/opt/remi/php74/php.d/10-opcache.ini
sed -i -e "s/^;opcache.revalidate_freq=/opcache.revalidate_freq=/g" /etc/opt/remi/php74/php.d/10-opcache.ini
sed -i -e "s/^;opcache.enable_cli=/opcache.enable_cli=/g" /etc/opt/remi/php74/php.d/10-opcache.ini
MySQLのUNIXソケットを利用する場合は、その場所を確認します。以下は/var/lib/mysql/mysql.sockを使用する例です。
ls -l /var/lib/mysql/mysql.sock
# MySQLソケットの設定
sed -i -e "s|^[;[:space:]]*mysqli\.default_socket[[:space:]]*=.*$|mysqli.default_socket = /var/lib/mysql/mysql.sock|g" /etc/opt/remi/php74/php.ini
sed -i -e "s|^[;[:space:]]*pdo_mysql\.default_socket[[:space:]]*=.*$|pdo_mysql.default_socket = /var/lib/mysql/mysql.sock|g" /etc/opt/remi/php74/php.ini
設定を確認します。
grep -E '^[;[:space:]]*(date\.timezone|mysqli\.default_socket|pdo_mysql\.default_socket)[[:space:]]*=' /etc/opt/remi/php74/php.ini
grep -E '^[;[:space:]]*opcache\.(memory_consumption|interned_strings_buffer|max_accelerated_files|revalidate_freq|enable_cli)=' /etc/opt/remi/php74/php.d/10-opcache.ini
php74 -i | grep -E '^(date\.timezone|mysqli\.default_socket|pdo_mysql\.default_socket|opcache\.memory_consumption|opcache\.interned_strings_buffer|opcache\.max_accelerated_files|opcache\.revalidate_freq|opcache\.enable_cli) =>'
CGIラッパーの設定
PHP 7.4を使用するサイトでは、そのサイトのCGIラッパーの実行先を次のように指定します。suEXECで使用するユーザー、所有者、権限を維持してください。
#!/bin/sh
exec /usr/bin/php74-cgi
切り替え後は実際のWebアクセスでPHPのバージョンを確認します。確認方法は後述の「動作確認」を参照してください。
動作確認
Apacheの設定を変更した場合は、まず構文を確認します。
httpd -t
Webサイトから実行されるPHPのバージョンは、CLIではなくWeb経由で確認します。CGIラッパーを変更したサイトに次の確認用PHPファイルを一時的に配置します。
<?php
header('Content-Type: text/plain; charset=UTF-8');
echo PHP_VERSION, "\n";
echo PHP_SAPI, "\n";
?>
確認用ファイルはアクセス制限を行ったうえで使用し、確認後は削除します。ラッパーを変更してもmod_fcgidの既存プロセスが残る場合があるため、実際に応答しているPHPを確認します。
また、cronなどでPHPを実行している場合は、Web用のCGIラッパーとは別に使用するPHPのパスを確認します。
元のPHPに戻す場合
PHPを切り替えたサイトを以前の標準PHPに戻すには、そのサイトのCGIラッパーを元に戻します。パッケージをアンインストールする必要はありません。
#!/bin/sh
exec /usr/bin/php-cgi
戻した後もWebからバージョンを確認します。
定期的なメンテナンス
RemiのSCL版PHPもDNFで更新します。remi-safeを通常は無効にしているため、更新するときに指定します。
dnf upgrade --refresh --enablerepo=remi-safe
PHPだけを対象にする場合は、インストールしたバージョンのコマンドを選択します。
PHP 8.5の場合です。
dnf --enablerepo=remi-safe update 'php85*'
PHP 8.4の場合です。
dnf --enablerepo=remi-safe update 'php84*'
PHP 8.3の場合です。
dnf --enablerepo=remi-safe update 'php83*'
PHP 8.2の場合です。
dnf --enablerepo=remi-safe update 'php82*'
PHP 8.1の場合です。
dnf --enablerepo=remi-safe update 'php81*'
PHP 8.0の場合です。
dnf --enablerepo=remi-safe update 'php80*'
PHP 7.4の場合です。
dnf --enablerepo=remi-safe update 'php74*'
PHPのサポート期間とCentOS Stream 9のサポート期間を確認し、バージョンアップとOS移行を計画します。
このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
本ページの内容は可能な限り正確な情報を提供するよう努めていますが、内容の正確性・最新性・安全性を保証するものではありません。本情報を利用して生じたいかなる損害についても、当方は一切の責任を負いません。実施にあたっては必ずご自身の判断と自己責任にてお願いいたします。