勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

AlmaLinux8系に異なるバージョンのPHPをインストールする方法

  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

 - PHP サーバー

  関連記事

レンタルサーバのQuicca Plus(クイッカプラス)を使用した感想
レンタルサーバのQuicca Plus(クイッカプラス)を使用した感想

利用しているVPSのWebARENA Indigoから価格改定の案内メールが届い ...

HTTP応答ヘッダーにApacheやPHPのバージョン等不要なデータを出力させないようにする方法
HTTP応答ヘッダーにApacheやPHPのバージョン等不要なデータを出力させないようにする方法

当サイトをFirefoxの開発者ツールからチェックするとHTTP応答ヘッダーに「 ...

他ドメインから画像の呼び出し(直リンク)を禁止する方法
他ドメインから画像の呼び出し(直リンク)を禁止する方法

他ドメインからの画像の呼び出し、いわゆる直リンクの禁止を行いたかった。調べるとh ...

HSTS(HTTP Strict Transport Security)の設定方法
HSTS(HTTP Strict Transport Security)の設定方法

あるサイトのセキュリティ対策としてHSTS(HTTP Strict Transp ...

AlmaLinux8.6にLAMP環境&WordPressを構築する方法
AlmaLinux8.6にLAMP環境&WordPressを構築する方法

だいぶ前にCentOS6系から7系に移行したが、7系も2024/6/30にサポー ...