AlmaLinux8系に異なるバージョンのPHPをインストールする方法
AlmaLinux8系&Apache2.4系の環境に異なるバージョンのPHPをインストールしたい。また、基本的にはPHP8.5で動作させ、特定のディレクトリのみPHP8.3で動作させたい。以下に対応方法をメモ。
目次
環境について
VPS
今回はKAGOYA CLOUD VPSのCPU1コア / メモリ1GBプランで作業した。SSH接続は公式案内の通り以下でログインできる。
- 接続ポート -> 22
- ユーザ名 -> root
- パスワード or 秘密鍵 -> インスタンス作成時に選択したもの
AlmaLinux / Apache
詳細なバージョンは以下の通り。
#AlmaLinuxのバージョン確認 cat /etc/redhat-release #実行結果 AlmaLinux release 8.10 (Cerulean Leopard) #Apacheのバージョン確認 httpd -v #実行結果 Server version: Apache/2.4.37 (AlmaLinux)
事前準備
過去記事を参考にApacheのインストールまで済ませた状態。必要に応じてFTPサーバもインストールする。
対応方法
PHPのインストール
サーバにSSH接続し、以下の通り進める。
#epelリポジトリのインストール dnf install epel-release #remiリポジトリのインストール dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm #dnfのメタデータキャッシュを作成 dnf clean all && dnf -y makecache #インストール可能なPHPのリストを表示 dnf module list php
PHPのリストは以下が表示された。
AlmaLinux 8 - AppStream 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 common [d], devel, minimal PHP scripting language php 8.0 common [d], devel, minimal PHP scripting language php 8.2 common [d], devel, minimal PHP scripting language 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 php remi-8.2 common [d], devel, minimal PHP scripting language php remi-8.3 common [d], devel, minimal PHP scripting language php remi-8.4 common [d], devel, minimal PHP scripting language php remi-8.5 common [d], devel, minimal PHP scripting language
引き続き以下の通り進める。
#PHP8.5を指定 dnf module reset php && dnf -y module enable php:remi-8.5 #再度インストール可能なPHPのリストを表示 dnf module list php
するとremi-8.5が選択された状態になる筈。
AlmaLinux 8 - AppStream 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 common [d], devel, minimal PHP scripting language php 8.0 common [d], devel, minimal PHP scripting language php 8.2 common [d], devel, minimal PHP scripting language 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 php remi-8.2 common [d], devel, minimal PHP scripting language php remi-8.3 common [d], devel, minimal PHP scripting language php remi-8.4 common [d], devel, minimal PHP scripting language php remi-8.5 [e] common [d], devel, minimal PHP scripting language
引き続きインストール作業を進める。
#PHP8.5とモジュールをインストール dnf -y install php php-cli php-fpm php-devel php-pear php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml php-dom php-redis php-memcached php-memcache php-process #インストールされたPHPのバージョンを確認 php -v #実行結果 PHP 8.5.9 (cli) (built: Jul 28 2026 13:06:52) (NTS gcc x86_64) #PHP8.3とモジュールをインストール dnf install php83 php83-php-cli php83-php-fpm php83-php-devel php83-php-pear php83-php-common php83-php-bcmath php83-php-gd php83-php-intl php83-php-mbstring php83-php-mysqlnd php83-php-opcache php83-php-process php83-php-xml php83-php-xmlrpc php83-php-zip php83-php-pecl-apcu php83-php-pecl-imagick-im7 php83-php-pecl-memcache php83-php-pecl-memcached php83-php-pecl-redis #インストールしたPHP8.3のバージョンを確認 php83 -v #実行結果 PHP 8.3.33 (cli) (built: Jul 28 2026 17:56:10) (NTS gcc x86_64) #PHP8.5のFPM起動 systemctl enable --now php-fpm #PHP8.3のFPM起動 systemctl enable --now php83-php-fpm #PHP8.3の設定ファイルを退避(競合を防ぐため) mv /etc/httpd/conf.d/php83-php.conf /etc/httpd/conf.d/php83-php.conf.bak
ここまででPHPのインストールは完了。次はApache側の設定になる。
Apache側の設定
前提として以下ディレクトリ&PHPバージョンで動作させたい。
- /var/www/html 以下はデフォルトのPHP8.5で動作
- /var/www/html/php83 以下のみPHP8.3で動作
引き続きサーバにSSH接続し、以下の通り進める。
#バージョン切り替え用の設定ファイルを作成 vi /etc/httpd/conf.d/php_selector.conf
以下を記述し「:wq」で保存する。
# --------------------------------------------------
# 全体設定
# --------------------------------------------------
<Directory "/var/www/html">
<FilesMatch \.(php|phar)$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
</Directory>
# --------------------------------------------------
# PHP8.3の設定
# --------------------------------------------------
<Directory "/var/www/html/php83">
<FilesMatch \.(php|phar)$>
SetHandler "proxy:unix:/var/opt/remi/php83/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
</Directory>
以下の通り進める。
#設定ファイルの構文チェック httpd -t #以下ならOK Syntax OK #Apacheの再起動 systemctl restart httpd
ここまででエラーが発生していなければPHP8.5 / 8.3での動作が確認できる筈。
その他
異なるバージョンのPHPを導入する際の注意点
バージョン違いのソフトウェアをインストールする場合、今回だと「php83-*」のようにSCL形式(Software Collection)でインストールする必要ありとのこと。「php83-*」ではなく「php-*」形式だと上書きされ、破損する可能性があるため。
更に異なるバージョンを導入したい場合
前述のSCL形式でPHPを導入し、PHPx.xの設定ファイルを退避とApache側のphp_selector.confを追記する。
設定ファイル(php.ini)の場所
設定ファイルの場所は以下の通り。
#PHP8.5の設定ファイル /etc/php.ini #PHP8.3の設定ファイル /etc/opt/remi/php83/php.ini
また、設定変更後の反映方法は以下の通り。
#PHP8.5の設定を反映する場合 systemctl restart php-fpm #PHP8.3の設定を反映する場合 systemctl restart php83-php-fpm
関連記事
-
-
サーバーリソース監視にsar(sysstat)が便利だった
過去にサーバーリソース監視のmuninとかcactiを何度か入れようとして挫折し ...
-
-
htaccessファイルでダイジェスト認証を行う方法
何かで調べ物をしていたときにdigest認証というものを見かけた。basic認証 ...
-
-
サーバー管理ツールPlesk12の各種設定方法
サーバー管理ツールPlesk12を初めて使用する機会があった。諸々設定する必要が ...
-
-
CentOS6系環境のVPSに対して公開鍵認証を設定する方法
本番稼動しているVPSサーバーでSSHの接続ログをかなり久しぶりに見ると、不正ロ ...
-
-
CentOS7系からAlmaLinux8系に移行(サーバも移行)した際に詰まった点と変更点
前日CentOS7系からAlmaLinux8系に移行した(サーバはどちらも同じV ...