サブドメインでPHPのバージョンを変える方法

そろそろ猫の爪を切りたいYu-ichiですneko.gif

猫がカーペットの上を歩くと爪が引っかかって歩きづらそうにしているので
切ってあげたいのですが、最近嫌がるようになったのでなかなか切れません。naku02.gif

さて今回はPHPのバージョンを変更する方法です。
多くのレンタルサーバーでは、管理画面からPHPのバージョンをボタン一つで切り替えられるかと思います。
普通に使う分には問題ありませんが、サブドメインやディレクトリを使ってバージョンの異なるCMSを動かしたい!という時には問題になります。

例えば、PHP5.6で動いているサイトに新しくPHP8以上で動く最新のCMSを入れてショップを構築したい!となった場合、PHPのバージョンを上げないと最新のCMSは動かないし、バージョンを上げると現行のサイトが動かなくなってしまいます。

現行のサイトを新しくすればいいじゃん!と思うかもしれませんが、
最新のCMSでショップを作りつつ、現行サイトのリニューアルもしなければいけません。
現行サイトのリニューアル用のステージング環境を用意して、データのコンバートやって~など時間もかかるし費用もかかります。

そこで、サブドメインでは別のバージョンのPHPを使う方法をご紹介します。
ただし、サーバーによってはダメな場合があるのでご注意ください。

1.準備するもの

  • .htaccess
  • phpver.cgi

「phpver.cgi」は好きなファイル名に変更してもOKですが、.htaccessで指定するファイル名と合わせてください。

2.記述を追加

まず「phpver.cgi」に以下の記述を追加します。
文字コードは「UTF-8」で改行は「LF」で作成します。

#!/usr/bin/sh
exec /usr/bin/php-fcgi8.2

サーバーによってpathが違うので、自分のサーバーの仕様に合わせて変更してください。

次に「.htaccess」に以下の記述を追加します。

AddHandler php-change .php
Action php-change /phpver.cgi

これで準備が整いました。
なお、サブディレクトリで使う場合は、
「/サブディレクトリ名/phpver.cgi」というようにパスをしっかり指定しましょう。

3.アップロード

用意した2つのファイルをサブドメイン直下またはサブディレクトリ内にアップロードします。
あとは変更できたか「phpinfo();」など使って確認してください。

500エラーやPHPのバージョンが変わっていない場合は、
phpver.cgiに追加したPHPの指定が間違っているか、.htaccessのAddHandlerが使えないなどが考えられるので、サーバーの仕様を確認してください。

ちなみに・・・
「#!/usr/bin/sh」を「#!/user/bin/sh」と書いていることに気が付かず、
ハマったので皆さんも気を付けてください。neko.gif

トラックバックURL