Xserverでドメイン設定とは異なるバージョンのPHPを実行する方法

Xserverでドメイン設定とは異なるバージョンのPHPを実行する方法

Xserverは、基本ドメイン単位でしかPHPのバージョンを切り替えることが出来ないのですが、既存のドメインに新しいサイトを追加するときに最新のバージョンのPHPを使いたい場面は多々有ります。

同じレンタルサーバーでもさくらサーバーでPHPのバージョンを切り替える方法は沢山紹介されていますがXserverはあまり見かけないので、Xserverでドメイン設定とは異なるバージョンのPHPを実行する方法を紹介致します。

PHPバージョンの切り替え方法

本来はSetHandlerでディレクトリ単位でPHPバージョンを切り替えたかったのですが上手く動作させることができなかったので、FastCGIでPHPを実行することにしました。

example.fcgi

#!/usr/bin/php-fcgi7.2
<?php
// ここにPHPを書いていく
phpinfo();

各PHPバージョンのパス

FastCGIファイルの1行目を実行したいバージョンのパスに変えることでPHPのバージョンを切り替えることが出来ます。

PHPバージョンパス
PHP7.2(CGI)/usr/bin/php7.2-cgi 又は /usr/bin/php-fcgi7.2
PHP7.1(CGI)/usr/bin/php7.1-cgi 又は /usr/bin/php-fcgi7.1
PHP7.0(CGI)/usr/bin/php7.0-cgi 又は /usr/bin/php-fcgi7.0
PHP5.6(CGI)/usr/bin/php5.6-cgi 又は /usr/bin/php-fcgi5.6
PHP5.5(CGI)/usr/bin/php-fcgi5.5
PHP5.4(CGI)/usr/bin/php-fcgi5.4
PHP5.3(CGI)/usr/bin/php-fcgi5.3
PHP5.1(CGI)/usr/bin/php-fcgi5.1

※サーバーによってパスが異なる場合があります

.htaccess

Laravelなどのように全てのアクセスを一つのファイルを通して捌きたい場合は、.htaccessに以下の設定を行うことで、全てのアクセスがindex.fcgiで実行できます。

.htaccess

DirectoryIndex index.fcgi index.php index.html

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.fcgi [L]

おわりに

今回は上手く設定できませんでしたが、.htaccessにSetHandlerを上手く設定できれば、ディレクトリ単位でPHPのバージョンの切り替えができるはずです。

そちらの方も今後挑戦していきたいと思います。