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バージョンに対応していますが、常に適切な仮想ホスト設定を使用することをお勧めします。
関連記事: