Xserver | エックスサーバーで、サブディレクトリ毎にPHPのバージョンを指定する方法

備忘録

エックスサーバーを利用していて、サブドメイン毎に違うバージョンのPHPを指定したい場合があるかと思います。

例えば、サブドメイン毎に、PHPのバージョンが異なるフレームワークを利用する場合などがあります。

エックスサーバーでは、このような場合も柔軟に対応できます。

本記事では、エックスサーバー(Xserver)で、サブディレクトリ毎にPHPのバージョンを指定する方法を説明しています。

ぜひ、参考にしていただければと思います。

サーバーパネルからPHPのバージョン変更について

エックスサーバーでは、サーバーパネル(コントロールパネル)からドメイン毎に違うバージョンのPHPの設定が可能です。

しかし、サーバーパネルからはサブドメイン毎の異なるPHPのバージョン設定は出来ません。

ドメイン毎のPHPバージョン変更方法は、マニュアルサイトのPHPのバージョンについてページをご確認ください。

PHPのバージョン切り替え方法|エックスサーバー

そのため、サブドメインに対して異なるバージョンのPHPを使うには、この後に説明する手順であるFastCGIでPHPを実行する方法になります。

FastCGIについて

「FastCGI」とは、プロセス初回実行時に該当プロセスを一定時間サーバー内に保持することで、次回以降、実行時の「プロセスの起動/終了」を省略し、 高速化や、プロセスの起動/終了に伴うCPUへの負荷を軽減することで、速度面で優れるとされるモジュール版PHPと同等の処理能力を持つ動作方式です。

一度「プロセスの起動」をすると、一定時間は「プロセスの終了」を することなく起動し続けることで、処理時間の大幅な短縮と、プロセスの起動/終了に伴うCPUへの負荷を軽減します。

詳細はエックスサーバーの公式サイトをご確認ください。
FastCGIについて|レンタルサーバー【エックスサーバー】

サブドメインに違うバージョンのPHPを設定する方法

エックスサーバーの領域内に設定したサブドメインに、今回はPHPバージョン8.0を設定します。

PHP各バージョンのコマンドパス確認

PHPを設定するためには、使用したいPHPバージョンの「 コマンドパス 」が必要になります。
(コマンドパスとは、PHPを実行するためのブログラムの格納場所とお考えください)
各PHPバージョンのパスは、バージョンによって異なります。

Xserverの管理画面からコントロールパネル(サーバーパネル/ServerPanel)にログインして「サーバー情報」→「コマンドパス一覧」から確認するか、公式マニュアルサイト「プログラム言語・コマンドパス」ページの「コマンドパス一覧」から確認できます。

拡張子fcgi(cgi)のファイルを用意

PHP8.0系を使用するので、コマンドパスは、PHP8.0.x(CGI)の「 /usr/bin/php-fcgi8.0 」を使用します。
テキストエディタで「 php80.fcgi 」を新規作成し、その中にコマンドパスを記述します。
ファイル名にはルールはありませんので、わかりやすい名前が良いと思います。

今回は、php8.0を設定するので、分かりやすいようにphp80.fcgiにしています。

このファイルをFTPでアップロードする際、cgiのパーミッションを「 705 」に設定してください。
(パーミッションが正しくない場合500エラーが表示されます)

.htaccessの編集

.htaccessファイルを作成します。
すでにサブドメインの領域に.htaccessがある場合は、そのファイルをダウンロードして以下の設定を追加してください。
php80.fcgi はファイル名です。設定1で作成したファイル名を記述しててください。

php.ini(.user.ini)について

フォルダ内の「.user.ini」というファイルが、php.iniファイルとして機能します。
.user.iniには今回以下の設定を追加します。他に必要な設定は適宜追加してください。

php.iniの設定が不要な場合は、このファイルを作成する必要はありません。

動作確認

以上で、サブドメイン毎のPHPのバージョン設定が完了しましたので、動作確認をしてみます。

phpinfo()を適当な場所に作成して、確認します。

タイトルとURLをコピーしました