エックスサーバーのサブドメインとディレクトリでPHPバージョンを変更

エックスサーバーのサブドメインでPHPバージョンを切り替える方法です。ディレクトリ配下でも設定できる方法になります。

エックスサーバー(Xserver)の管理画面ではドメイン毎にPHPバージョンを変更できます。

PHPのバージョンについて | レンタルサーバーならエックスサーバー
https://www.xserver.ne.jp/manual/man_program_php_ver.php

この方法ではサブドメインやディレクトリ配下ではバージョン変更が出来ません。

ですが、.htaccessを変更する事でPHPバージョンの切り替えが実現出来るため、その方法をまとめていきます。

設定するポイントとしては

  • 実行するPHPバージョンを記載したcgiを用意
  • cgiを.htaccessと同じ階層に置く
  • .htaccessにcgiを指定
  • cgiに実行権限を付与する

となっています。

PHPバージョンの設定方法

実際には以下の指定を行います。(PHP8.1に指定する場合の指定)

#!/usr/bin/sh
exec /usr/bin/php-fcgi8.1
Action myphp-script /php81.fcgi
AddHandler myphp-script .php .html

ファイル名は任意です(今回はphp81.fcgiにしています)

# cgiに実行権限のパーミッションを付与、SSH接続後を想定
chmod +x php81.fcgi

以上で設定は完了です。

ちなみに、配置する場所は

〇〇.com/public_html/△△.〇〇.com/.htaccess
〇〇.com/public_html/△△.〇〇.com/php81.fcgi

のような、公開ディレクトリになっている場所に設置しないと実行されないので注意してください。

設定できるPHPバージョン

エックスサーバーの公式マニュアルにあるパスならどれでも設定可能です。以下を参照ください

PHP 8.1.x(CGI)/usr/bin/php8.1-cgi 又は /usr/bin/php-fcgi8.1
PHP 8.0.x(CGI)/usr/bin/php8.0-cgi 又は /usr/bin/php-fcgi8.0
PHP 7.4.x(CGI)/usr/bin/php7.4-cgi 又は /usr/bin/php-fcgi7.4
https://www.xserver.ne.jp/manual/man_program_soft.php#link-b

実行権限について

設定方法の中で、実行権限をSSH接続後で設定する方法を記載しましたが、SSH接続をせずとも設定することが可能です。

エックスサーバーの公式マニュアルでは推奨されるパーミッションが記載されています

.htaccess644
.cgi / .pl などの CGI 実行ファイル755, 705のいずれか
適切なパーミッション値
https://www.xserver.ne.jp/manual/man_server_permission.php#link-b

この設定値を参考に、FTPソフトで権限を付与してもいいですし、エックスサーバーのファイルマネージャから権限を付与する方法もあります。

ファイルマネージャの設定方法はこちらから
https://www.xserver.ne.jp/manual/man_tool_file.php