さくらインターネットのサーバーは、PHPのバージョンをサイト毎に指定できません。
サーバーのPHPバージョン指定はサーバー全体に適用される1つだけです。
サーバー全体がPHP5.2で動いているさくらインターネットのサーバーに別ドメインで最新のWordpressをインストールしたら動きませんでした。
仕方ないので、PHPバージョンは5.2が必要なサイトだけPHP5.2にして、サーバー全体をPHP7.4に上げることにしました。
この記事では、さくらインターネットのサーバーでサイト毎にPHPのバージョンを指定する方法をまとめています。
PHPバージョンを変更するドメインにphp.cgiファイル用意
PHPバージョンを変更するドメインのドキュメントルート(公開ディレクトリ)に以下の内容のphp.cgiを置いて、パーミッションは705にします。
#!/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
PHPバージョンを変更するドメインに.htaccessを用意
PHPバージョンを変更するドメインのドキュメントルートに.htaccessがあれば以下を追記。なければ.htaccessを作成する。
Action myphp-script /php.cgi
AddHandler myphp-script .php .html
PHPの設定を適用したいディレクトリに .user.ini を格納
.user.iniは、php.iniと同じでよいので、サーバー側のphp.iniの内容を、PHPバージョンを変更するドメインのドキュメントルートにコピーします。
サーバー側の設定との差分だけでいいのか、全体が必要なのかはよくわからないので、サーバーのphp.iniをそのままコピペしました。
include_path = "/home/newmegwin/ZendFramework/library"
; use cookie to handle session data
session.use_cookies = On
session.save_path = "/tmp"
memory_limit = 34M
post_max_size = 33M
upload_max_filesize = 32M
max_execution_time = 6000
サーバーのPHPのバージョンをPHP7.4(モジュール版)に変更
php5.2はcgi版で動作するのですが、サーバー全体はモジュール版の最新PHPに変更します。
今回設置したphp.cgiとサーバー全体のPHP7.4(モジュール版)は共存できるので、PHP7.4のcgi版を選ぶ必要はないです。
phpinfo()でPHPのバージョンを確認する
php.cgiを設置したサイトがPHP5.2で動いているかどうか、phpinfo()を使って確認します。
phpinfo.phpにブラウザでアクセスして、PHP5.2であれば成功です。
<?php
phpinfo();
?>
まとめ
さくらインターネットのサーバーはマルチドメイン対応ですが、サーバーのPHPバージョンと異なるバージョンを使うサイトにはcgi版を使うことになります。モジュール版と比べてcgi版は速度が遅いので、ユーザーから見ると使いにくいサーバーだと思います。