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

  • 24
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

html内でPHPを使う

さくらインターネットでは
.htacees
php.cgi
の2ファイルが必要です。

.htaceess

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

.htaceess
Action myphp-script /php.cgi
AddHandler myphp-script .php .html

php.cgi

.htaceessと同じ階層に、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の変更

.htaceessの
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/でしたが、リンクされるみたいなのでそのまま引用させて頂きました。

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

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

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

例)
ドメイン以下はサーバーで設定したバージョンで使用し、
ドメイン/testディレクトリ以下だけphp5.6にする。

ドメイン直下にup

.htaceess
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という名前に変更しました。

.htaceess
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