エックスサーバーを利用していて、サブドメイン毎に違うバージョンのPHPを指定したい場合があるかと思います。
例えば、サブドメイン毎に、PHPのバージョンが異なるフレームワークを利用する場合などがあります。
エックスサーバーでは、このような場合も柔軟に対応できます。
本記事では、エックスサーバー(Xserver)で、サブディレクトリ毎に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にしています。
1 2 |
#!/usr/bin/sh exec /usr/bin/php-fcgi8.0 |
このファイルをFTPでアップロードする際、cgiのパーミッションを「 705 」に設定してください。
(パーミッションが正しくない場合500エラーが表示されます)
.htaccessの編集
.htaccessファイルを作成します。
すでにサブドメインの領域に.htaccessがある場合は、そのファイルをダウンロードして以下の設定を追加してください。
php80.fcgi はファイル名です。設定1で作成したファイル名を記述しててください。
1 2 |
Action myphp-script /php80.fcgi AddHandler myphp-script .php .html |
php.ini(.user.ini)について
フォルダ内の「.user.ini」というファイルが、php.iniファイルとして機能します。
.user.iniには今回以下の設定を追加します。他に必要な設定は適宜追加してください。
1 2 |
upload_max_filesize = 50M display_errors = On |
php.iniの設定が不要な場合は、このファイルを作成する必要はありません。
動作確認
以上で、サブドメイン毎のPHPのバージョン設定が完了しましたので、動作確認をしてみます。
phpinfo()を適当な場所に作成して、確認します。