サーバーのPHPのバージョンをドメインごとに変える方法
先日、とあるお客様のレンタルサーバー(さくらサーバー)上でwordpressをインストールしたら全く表示されないという事案が発生しました。
中身を確認したところ、PHPのバージョンがかなり古く、だいぶ昔にサポートが終了していたレベル。
そこでシンプルにレンタルサーバーの管理画面からバージョンを上げられれば良かったのですが、サーバーに紐づけられている他のドメインに事情があり、それが出来ない状態でした。
そこで、「サーバーのPHPのバージョンをドメインごとに変える方法」を色々調べてなんとか成功したので、ここに記載します。
因みに、私は4時間かかりましたが、皆さんは下記の手順を参考に10分で終わりますように…。
なお、あくまでもその時の環境であった”さくらサーバー”の手順です。
他のサーバーでも同様の方法で出来るのでは?と思っていますが、一応ご自身でお調べいただくようお願いします。(なんなら、サーバー次第では管理画面から簡単にできるかもしれません)
.htaccessファイルを作成する
まずは.htaccessファイルを作成しましょう。
以下の内容をペーストしたファイルを作成し、「.htaccess」という名前で保存します。
(※すでに.htaccessファイルが存在する場合は追記すればOKです。既に記述されているコードがあっても、1行目に挿入しちゃって大丈夫です。)
Action myphp-script /php.cgi
AddHandler myphp-script .php .html
なお、ドメイン単位でPHPバージョンを変更する場合は、ルートディレクトリ(一番上の階層)にこのファイルを格納する為この記述で良いのですが、サブディレクトリ単位でPHPバージョンを変更したい場合は「/サブディレクトリ名/php.cgi」に変更してあげる必要があります。
php.cgiファイルを作成する
次にphp.cgiファイルを作成しましょう。
VSCodeなどのテキストエディターを開いて以下のコードをペーストしてから「php.cgi」という名前で保存します。
#!/bin/sh
exec /usr/local/php/8.3/bin/php-cgi
なお、上のコードの中にある「8.3」と書かれた箇所がPHPのバージョンを指定している箇所になります。
ここを「8.0」や「7.4」としてあげれば、切り替えたいPHPバージョンに変更してあげることが可能です。
PHPを切り替えたいディレクトリにファイルをアップロードする
php.cgiファイルの作成ができたら、作成したファイルをPHPを切り替えたいディレクトリにアップロードしましょう。
どちらも同じ階層に置いてください。
php.cgiのパーミッションを「705」に変更する
Filezillaを使用してもいいですし、レンタルサーバーから”ファイルマネージャー”とかを使用しても良いので、php.cgiがあるディレクトリまでアクセスします。
そして、php.cgiを右クリックして、パーミッションを705に変更しましょう。
シンプルに「パーミッションを変更」みたいなボタンが出てくると分かりやすいですが、やり方次第で多分その文言はそれぞれですので、ご自身の方法のやり方でググるかチャッピー(チャットGPT)に聞いてください。
php.cgiファイルの設定
ここを見落としていて私は4時間迷いました!
この設定を忘れないためにこの記事を書いたといっても過言ではありません。
文字コードをUTF-8にする
とにかく、文字コードをUTF-8にしてください。
さくらサーバーのファイルマネージャーでは右下に設定する箇所がありましたが、他のサーバーやFilezillaでは違いますので、そのやり方はググるかチャッピーに聞いてください。
改行コードをLFにする
これも同様、とにかく改行コードをLFにしてください。
私の場合は改行コードがCRLFになっていたのですが、LFにした途端全て動きました。
文字コードの時と同様、さくらサーバーのファイルマネージャーでは右下に設定する箇所がありましたが、他のサーバーやFilezillaでは違いますので、そのやり方はググるかチャッピーに聞いてください。
完了!
これで多分動いているのではないかと思います。
一応PHPのバージョンの確認方法などもありますが、ここではそれは省略します。
どうか、これを見てくれている皆様は、私みたいにこれに4時間費やすことはなく、10分で作業が終わりますように…。