エックスサーバー(Xserver)でサブドメイン毎に異なるバージョンのPHPを設定して動作させる方法

  1. エックスサーバーならサブドメイン毎に違うバージョンのPHPの設定が可能
  2. エックスサーバーのサーバーパネルからPHPのバージョン変更可能な範囲は
  3. FastCGIとは
  4. エックスサーバーで、特定のサブドメインに違うバージョンのPHPを設定する方法
  5. 設定1. 拡張子fcgi(cgi)のファイルを用意
  6. 設定2. .htaccessに記述を追加
  7. 設定3. php.ini(.user.ini)について
  8. PHP7.4.xの設定ファイルをアップロード

エックスサーバーならサブドメイン毎に違うバージョンのPHPの設定が可能

現在、とあるサイトをエックスサーバーで運用していまして、Xserverの管理画面(サーバーパネル/ServerPanel)から、ドメイン全体のPHPのバージョンを7.0系に設定している状態。
クライアントの依頼で新しい(または古い)PHPのバージョンでの動作検証などを行う場合、検証用に作成した特定のサブドメインだけ、別バージョンのPHPを使いたい(例えばPHP5.6系やPHP7.4系)といった時に有効な方法をご紹介します。
エックスサーバーならサブドメイン毎に違うバージョンのPHPの設定が可能です!
さくらインターネットでも似たような設定ができるようですが、この辺もエックスサーバーを使う際に魅力的に感じる部分ですね(できればサーバーパネルから設定出来るようになると、とっても嬉しい...)

エックスサーバーのサーバーパネルからPHPのバージョン変更可能な範囲は

エックスサーバーでは、サーバーパネル(コントロールパネル)からドメイン毎に違うバージョンのPHPの設定が可能ですが、サーバーパネルからはサブドメイン毎の異なるPHPのバージョン設定は出来ません。
ドメイン毎のPHPバージョン変更方法は、マニュアルサイトのPHPのバージョンについてページをご確認ください。
PHPのバージョン切り替え方法|エックスサーバー

特定のサブドメインに対して異なるバージョンのPHPを使うには、少し面倒ですが、FastCGIでPHPを実行する方法を使います。

FastCGIとは

FastCGIとは、Webサーバ上でユーザプログラムを動作させるためのインタフェース仕様のひとつで、プロセス初回実行時に該当プロセスを一定時間サーバー内に保持、次回以降のプロセスの起動/終了を省略することで、プログラムの高速化とCPU負荷の軽減を実現。モジュール版PHPと同等の処理能力を持つ動作方式との事です。

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

エックスサーバーで、特定のサブドメインに違うバージョンのPHPを設定する方法

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

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

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

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


PHPの設定に必要なファイルは以下の3つです。

  1. php74.fcgi(ファイル名は適宜。拡張子は.cgiでも可)
  2. .htaccess
  3. .user.ini(必要に応じて使用します)

設定1. 拡張子fcgi(cgi)のファイルを用意

PHP7.4系を使用するので、コマンドパスは、PHP7.4.x(CGI)の「 /usr/bin/php-fcgi7.4 」を使用します。
テキストエディタで「 php74.fcgi 」を新規作成し、その中にコマンドパスを記述します。
ファイル名はphp7.4を設定するので、分かりやすいようにphp74.fcgiにしました。
拡張子は.cgiでも良いです。

#!/usr/bin/sh
exec /usr/bin/php-fcgi7.4

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

設定2. .htaccessに記述を追加

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

Action myphp-script /php74.fcgi
AddHandler myphp-script .php .html

設定3. php.ini(.user.ini)について

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

upload_max_filesize = 50M
display_errors = On

php.iniの設定が不要な場合は、このファイルはアップロードしなくても良いです。

PHP7.4.xの設定ファイルをアップロード

PHPを設定したいサブドメインのルートディレクトリに、設定1〜3で作成した3つのファイルをFTPでアップロードします。
その後ブラウザでphpinfoを表示して、PHPのバージョンが7.4.xになっているか、 .user.iniで指定した設定が反映されているか確認しましょう。

500エラーが出る場合は、cgiファイルのパーミッションの数値が正しいか確認してみてください。
問題なく表示されたら作業は完了です。
今回は以下の記事を設定の参考にさせていただきました。ありがとうございました。
エックスサーバーでフォルダ毎にPHPのバージョンをかえる方法 | UNIFASブログ

書いた人:やまライダー

やまライダーです。仙台市でブロガー兼システム寄りのWebディレクターとして働きながら嫁と一緒に子育て奮闘中!
タスク管理ツール「Todoist」でガントチャートが作成ができる補助ツール「Todoist ガントチャートコンバータ」作者。
鳥が好きでキンカチョウ(錦花鳥)を飼っています。

プロフィールを見る
やまライダーのTwitter(自転車用アカウント)
やまライダーのTwitter(システム寄りwebディレクター用)
やまライダーのInstagram