Edited at

さくらインターネットで、異なるバージョンのPHPを使う


html内でPHPを使う

さくらインターネットでは

.htacees

php.cgi

の2ファイルが必要です。


.htaccess

以下の2行を追加して、マルチドメインやサブドメインを設定したディレクトリにupします。


.htaccess

Action myphp-script /php.cgi

AddHandler myphp-script .php .html


php.cgi

.htaccessと同じ階層に、php.cgiを追加します。

テキストエディタで以下の文言を記載し、php.cgiという名前で保存。

パーミッションは705にします。(755かも?)


php.cgi

#!/bin/sh

exec /usr/local/bin/php-cgi


PHPのバージョン設定を変えたいとき

現在サーバーで使用しているPHPのバージョンは、

さくらのサーバーコントロールパネル>アプリケーションの設定>PHPのバージョン選択で確認できます。

TeraTermなどSSHでログインをしていれば、php -vとコマンドを打ってもよいでしょう。

コントロールパネルからだと、PHPのバージョン選択>新しいバージョンで、どのバージョンが使用できるかが選択できます。

既にPHPで作られたサイトを同じサーバーで運営している場合、安易に変更をすると、サーバーエラーの原因になります。

でも、使える関数の関係で、現在のバージョンとは違うバージョンを使用したいときがあります。

※今回namespaceを使いたいけど、PHP5.3からしか使えない。でも使用サーバーは5.2だったという経緯があります。。


php.cgiの変更

.htaccessの

Action myphp-script /php.cgi

では、同じ階層にあるphp.cgiを読み込んでます。

で、このphp.cgiは、/usr/local/bin/php-cgiを読み込んでいて、これがデフォルトのPHPのバージョンになっています。

なので、php.cgiを以下のように変更します。

こちらから引用させて頂きました)



php.cgi

#!/bin/sh

exec /usr/local/php/5.6/bin/php-cgi
#exec /usr/local/php/5.4/bin/php-cgi
#exec /usr/local/php/5.3/bin/php-cgi
#exec /usr/local/php/5.2/bin/php-cgi
#exec /usr/local/php/4.4/bin/php-cgi


使えるバージョンは、さくらのコントロールパネルから確認するか、

サーバーにFTPかSSH接続して、/usr/local/php/ を確認します。

使いたいバージョンと、該当するファイルを希望のものに設定し、

execのコメントアウトを外して保存してください。

確認したところ、/home/rs/php/でしたが、リンクされるみたいなのでそのまま引用させて頂きました。

.htaccessとphp.cgiを適応したいディレクトリに入れます。


任意の階層だけバージョンを変更

同じドメインであっても、任意の階層だけバージョンを変更することもできます。が、よくないのだろうか、どうなんだろう?

例)

ドメイン以下はサーバーで設定したバージョンで使用し、

ドメイン/testディレクトリ以下だけphp5.6にする。

ドメイン直下にup


.htaccess

Action myphp-script /php.cgi

AddHandler myphp-script .php .html


php.cgi

#!/bin/sh

exec /usr/local/bin/php-cgi

ドメイン/testディレクトリに.htaceesとphp.cgiをup

ややこしいので、php.cgiをphp56.cgiという名前に変更しました。


.htaccess

Action myphp-script /test/php56.cgi

AddHandler myphp-script .php .html


php56.cgi

#!/bin/sh

exec /usr/local/php/5.6/bin/php-cgi

これで共存ができました!


参考

さくらインターネットのレンタルサーバーでHTMLのファイルでもPHPが使えるようにする方法

HTML上でPHPを動かす(さくらサーバー:改訂)

さくらレンタルサーバでマルチドメイン毎にPHPの設定やバージョンを切り替える

2015-07現在:さくらスタンダードでhtmlをphpとして動作の際の注意2