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のバージョンの切り替えができるはずです。
そちらの方も今後挑戦していきたいと思います。