2026年9月9日

2026年9月9日

VPSで複数のPHPバージョンを共存させる方法

はじめに

本記事では、VPS上で複数のPHPバージョンを共存させる方法について解説します。現代のウェブ開発においては、新しいフレームワークやライブラリが頻繁に登場しており、プロジェクトごとに異なるPHPバージョンを使用することがよくあります。そのため、単一のVPS上で複数のPHPバージョンを管理し、必要なときに切り替えることは非常に重要です。

症状・背景

このテーマが必要になる主な場面:

  • 既存のプロジェクトに新しいパッチが必要で、そのパッチが特定のPHPバージョンに対応していない場合
  • 新しいプロジェクトで最新のPHPバージョンを使用したいが、既存のプロジェクトには旧バージョンが必要な場合
  • テスト環境と生産環境で異なるPHPバージョンを使用する必要がある場合

手順・設定方法

ステップ1: PHPバージョン管理ツール(phpenv)のインストール

# Homebrewがインストールされている場合、Homebrew経由でphpenvをインストールします。
# まずHomebrewをインストールする
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# phpenvをインストールします。
brew install phpenv

# .zshrcや.bash_profileなどにphpenvのパスを通すための設定を追加します。
echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
exec $SHELL

# phpenvをインストールしたことを確認します。
phpenv version

# PHPバージョンの一覧を表示します。
phpenv versions

ステップ2: 欲しいPHPバージョンのインストールと設定

# 例えば、PHP 7.4とPHP 8.1の両方をインストールする場合、次のようにします。
phpenv install 7.4
phpenv install 8.1

# インストールしたPHPバージョンのパスを表示します。
phpenv which php

# PHPバージョンを切り替えます。例えば、現在はPHP 7.4を使用していますが、PHP 8.1に切り替える場合、次のようにします。
phpenv global 8.1

ステップ3: 多重化設定(Apache/Nginx)

# Apacheの場合
echo '<IfModule mod_php5.c>
    <FilesMatch \.php$>
        SetHandler application/x-httpd-php
        PHPVersion 7.4
    </FilesMatch>

    <FilesMatch \.php81$>
        SetHandler application/x-httpd-php
        PHPVersion 8.1
    </FilesMatch>
</IfModule>' >> /etc/apache2/httpd.conf

# Nginxの場合
echo 'location ~ \.php4$ {
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}

location ~ \.php81$ {
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}' >> /etc/nginx/sites-available/default

# FPMソケットファイルの作成と設定
sudo ln -s /usr/local/etc/php/7.4/fpm/pool.d/www.conf /usr/local/etc/php/7.4/fpm/pool.d/vhost.conf
sudo ln -s /usr/local/etc/php/8.1/fpm/pool.d/www.conf /usr/local/etc/php/8.1/fpm/pool.d/vhost.conf

# FPMを再起動します。
sudo service php7.4-fpm restart
sudo service php8.1-fpm restart

ステップ4: 実践/トラブルシュート/監視

# PHPバージョンを切り替えるためのコマンドを確認します。
phpenv version

# ApacheやNginxを再起動して変更を適用します。
sudo service apache2 restart
sudo service nginx restart

# サーバー上のPHPバージョンを確認します。
php -v

注意事項

  • phpenvはHomebrew経由でインストールした場合は、システムのPHP環境と競合する可能性があります。そのため、ご使用のツールやフレームワークに影響を与えないように注意してください。
  • ファイル名を変更して.php4や.php81などとすることで、異なるPHPバージョンに対応していますが、ファイル名を変更するのは安全ではありません。常に適切な仮想ホスト設定を使用することをお勧めします。
  • FPMソケットファイルのパスはインストール時のデフォルト設定に基づいていますが、実際の環境では異なる場合があります。

まとめ

1. phpenv: PHPバージョン管理ツールとして有用です。複数のPHPバージョンをインストールし、切り替えることができます。

2. Apache/Nginx多重化設定: ApacheやNginxで異なるファイル拡張子を使用することで、特定のPHPバージョンに対応させることができます。

3. FPMソケット: ファイル名を変更して.php4や.php81などとすることで、異なるPHPバージョンに対応していますが、常に適切な仮想ホスト設定を使用することをお勧めします。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲