Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

akspect
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした