この作業が必要になった経緯
法人のクライアントで、レンタルしているサーバ内が、1つの法人やサービスだけではなく、複数のドメインを所持しており、且つそれぞれのウェブサイトの開発・リリース担当者が外部委託などでバラバラなため、PHPのバージョンの一括変更にリスクを生じたため。
インハウスで保守担当のエンジニアさんがいるところでは起きない現象ですが、外部委託でバラバラだと起こりえることです。連携もしないですし、何よりクライアントはPHPのバージョン変更に必要性を感じていません。
AというウェブサイトのCMSが最新のWordPressに対応しようと作業しているところに、BというウェブサイトがModxというCMS、Cというウェブサイトが…といった具合で、CMSもバラバラ、静的ページまであると…となると一括変更ではエラー表示や、サイト表示そのものが真っ白になる、なんてことがあります。
日本版ModXに関しては、PHPが5.6までの対応となっており、新規での導入はおすすめしておりません。
前提条件
- さくらインターネットのレンタルサーバを使っている
- エディターソフトとFTPソフトの使い方を知っている
さくらインターネットの仕様
さくらインターネットのレンタルサーバの仕様で、設定できるPHPのバージョンは1種類のみとなっております。この作業を経ずに変更した場合、複数のサイトの動作検証という保守作業が発生します。
さくらインターネットのレンタルサーバ内の対象プラン(2023/9/14現在)
- ライト
- スタンダード
- プレミアム
- ビジネス
- ビジネスプロ
- マネージド
使用できるPHPの提供バージョン(2024/2/10現在)
- PHP8.2
- PHP8.1(2024/11サポート終了予定)
- PHP8.0(サポート終了)
- PHP7.4(サポート終了)
- PHP5.6(サポート終了)
- PHP5.4(サポート終了)
- PHP5.3(サポート終了)
- PHP5.2(サポート終了)

現時点で最低でもPHP8.1が推奨されているバージョンとなっています。
上記画像の箇所は、コントロールパネル>スクリプト設定>言語バージョン設定>PHPのバージョンです。
画像にあるサーバはサポート終了の7.4.33を使用していますね。
さくらインターネットのレンタルサーバでドメイン/ディレクトリごとにPHPのバージョンを指定し変更する方法
1.「php.cgi」を作成
VSCodeなどのエディタソフトを使い、新規作成し、2行追加。
#!/bin/sh
exec /usr/local/php/7.4/bin/php-cgiこの場合は、PHP7.4を指定しています。他のバージョンを指定したい場合は、7.4を5.6に変更するなど適宜合わせてください。
保存した「php.cgi」を指定したディレクトリにアップロードし、パーミッションを705に設定します。
パーミッション705:所有者にすべての権限を与え、グループメンバーには権限を与えず、その他のユーザーには読み取りと実行を許可します。
2.「.htaccess」ファイルの作成/加筆
すでにディレクトリ内にある場合は加筆で構いませんが、ない場合は新規作成をしてください。
そして、2行追加。
Action myphp-script /php.cgi
AddHandler myphp-script .php .html3.PHPのバージョンが指定されたものに変更されているか確認
WordPressの場合
管理画面のサイトヘルスを参照してください。
それ以外の場合
「hoge.php」など、phpバージョンを確認するためだけのphpファイル(test.php,php-info.php,etc)を作成し、1行追加。
<?php phpinfo(); ?>確認の際、ディレクトリが入っているドメイン/hoge.phpにアクセスすると下記のように表示されます。

確認後、「hoge.php」は他人に安易に確認されないよう、サーバから削除することをおすすめします。
PHPバージョンの更新をしない場合のリスク
WordPressに限った話でいけば、開発終了をしたプラグインとの兼ね合いなどで、将来的にエラー表記がされる、表示がされないなどの内部的エラーの可能性があります。また、大きなプラグインが開発終了した場合は、ハッキングなどの入り口になってしまう可能性もありますので、セキュリティ的にはPHPのバージョンには注意すべき点です。
もっとも、ハッキング関係でいけばBasic認証やIP制限を設けるなど、ほかの対策も合わせる必要があります。
さくらインターネットではPHPの提供にアナウンスがありますので、こちらもご確認ください。
また、さくらインターネットのレンタルサーバに関しては、重大なセキュリティ問題が発覚した場合は即日提供を終了する可能性があるようです。


コメント