さくらインターネットは、レンタルサーバー単位でPHPバージョンは、1つしか設定できない。
ホームページ運用にさくらインターネットを利用しています。
1つのサーバーで、複数のドメインを運用しています。
しかしさくらインターネットでは、PHPバージョンはサーバーの単位で1つだけ指定できる仕様になっています。
ドメイン単位で変更することはできません。
ドメイン単位でphpバージョンを管理する複雑さやシステムの安定性を考慮しての基準なのでしょう。
仕方ありません。
(ドメインごとにPHPバージョンを変えたい場合はxserver等は管理画面で簡単に設定できます)
さくらインターネット管理画面から、現在のPHPバージョンを確認する
さくらインターネットの管理画面にアクセスします。
左メニューの中から、スクリプト設定→言語バージョン設定 のページ。
「言語バージョン設定」のページで、PHPバージョンを選ぶようになっています。
2024年10月現在、指定できるバージョンは
8.3,8.2,8.1,8.0,7.4,5.6,5.4,5.3,5.2
の9種類。(※8.1以前は全て非推奨バージョンになっています)
1つのサーバーの中で複数のドメインを利用している場合でも、PHPバージョンは上記のいずれか1つに決めなければなりません。
ドメインごとにPHPバージョンを切り替えたいなら、FTPでファイルを追加
ドメイン単位で違うシステムを利用していると、PHPバージョンを別にしたいという場合があります。
調べてみるとさくらインターネットでは、管理画面ではなくFTPを使用してファイルの追加や修正で
設定する方法があることが分かりました。
設定したいドメインのファイルに、FTPを使用してファイルに以下のファイルの追加と設定を行えば、9種類のPHPバージョンのいずれでも個別に指定することができます。
php.cgiファイルを作成し、.htaccessに追記をする
1,php.cgi ファイルを作成
php.cgiというファイルを作り、利用したいPHPバージョンを指定します。
2,.htaccessに追記(存在していなければ、ファイルを作成)
既にある.htaccessファイルに.php.cgi
php.cgiを読み込んで、php.cgiファイルと一緒にサーバーにアップします。
以上のファイルを、FTPを使用してサーバーでアップします。
.htaccessは隠しファイルと判定されるので。ローカル側のフォルダに表示されていないことがあります。使っているソフトによって表示させる方法があります。以下のサイトを参考にしてください。
FFFTPの場合:
NextFTP4を使っている場合:
1.php.cgiは、設定しているドメインにどのPHPバージョンを当てはめるのかを指定するためのファイル
php.cgiは、エディターを使用して以下の内容を記入してください。
#!/bin/sh
#exec /usr/local/php/8.3/bin/php-cgi
#exec /usr/local/php/8.2/bin/php-cgi
#exec /usr/local/php/8.1/bin/php-cgi
#exec /usr/local/php/8.0/bin/php-cgi
exec /usr/local/php/7.4/bin/php-cgi
#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
ここでは、php7.4を指定しています。
それ以外は#を頭に付けて、コメントアウトで無効化します。#の付いていないPHPバージョンが使用するバージョンになります。
その他の余計なべージョンの記述は削除してもかまいませんが、後々バージョンを変えたい、他のドメインにも設定したい場合など使用しやすいので全部書き込んでいた方が便利です。
2,.htaccessで、PHPバージョンを指定したphp.cgiファイルをサーバーに認識させます
既に.htaccessがあればそれに追記する。無い場合は、新に作成して以下の2行を記入します。
Action myphp-script /php.cgi
AddHandler myphp-script .php .html
一番後ろに追記していいです。
「Action myphp-script /php.cgi」は
ここで「myphp-script
」というカスタムハンドラーを作り、PHPを処理するためにCGIスクリプト「php.cgi
」を指定します。このスクリプトは、特定のPHPバージョンを実行するための指定です。
「AddHandler myphp-script .php .html」は
.php
と.html
ファイルをリクエストされたときに、「myphp-script
」ハンドラーで処理することを指示しています。つまり、これらのファイルを指定されたPHPエンジン(php.cgi
)で処理するように指示しています。
ちなみに.htaccessは、Apacheウエブサーバーの設定ファイルで拡張子が無いファイルです。初めについている「.」(ドット)はファイルを隠すもので、FTPの設定によっては表示されていないこともありますので、注意して探してください。
2つのファイルを作成したら、FTPでサーバーにアップします。
アップするファイルは、www以下のドメインファイル直下。ドメインのファイルのすぐ中に入れます。
WordPressを使っていたらこの場所
ファイルをアップしたなら、それぞれのパーミッション設定を調整します。
.htaccessは 604(644でも大丈夫でした)
php.cgiは 705
に設定します。
パーミッションの設定変更は、FTPクライアントソフトの場合
サーバー側の、ファイルを右クリックすると、「パーミッションの変更」というメニューがありますので
そこから修正します。
指定するファイル階層がさらに下の階層の場合、例えば上記事例の
serviceのフォルダ以下でphp7.4を指定したい場合は
.htaccessの場所は変わりませんが、php.cgiファイルは「service」のフォルダの中に移動させます。
そして.htaccessの記述は
Action myphp-script /service/php.cgi
AddHandler myphp-script .php .html
といったように設置したファイルの指定場所を変えて記述します。
PHPバージョンが対応できているかを確認する
設置を済ませたら確認のために、phpinfo.phpファイルを作成します。
以下を記述してphpinfo.phpというファイル名を作ります。
<?php phpinfo();?>
FTPを使用して、同じフォルダ内にphpinfo.phpファイルをアップします。
アップするのはここ
下記のアドレスを入力してアクセスしてください。
https://●●.jp/phpinfo.php
https://●●.jp/service/
phpinfo.php
以下の様な画面が表示され、
対応しているPHPバージョンを確認することができます。
確認ができたら、phpinfo.phpは使用しないので、セキュリティーを考え削除しましょう。
注意事項!PHPの違いを理解しておきましょう。
個別のサイトに自由にphpバージョンを設定するのは便利ですね。
しかし、後で知ったことですがサーバーで利用するphpには「モジュール版PHP」と「CGI版PHP」の2種類があるとのこと。それぞれの特長は
1. モジュール版PHP
モジュール版PHPは、ApacheなどのWebサーバーに組み込まれた形でPHPが動作する方式です。この方法では、PHPがサーバーの一部として実行されるため、サーバーとPHPのやりとりが効率的で、速度やメモリ使用効率が良いとされています。
- 特徴:
- パフォーマンスが高い:Apacheに組み込まれるため、PHPスクリプトの実行速度が比較的速いです。
- APCuなどのモジュールが使用可能:APCuのような永続キャッシュモジュールは、モジュール版PHPでのみ利用できる場合が多いです。
- 制限あり:サーバー全体で共通の設定を使用するため、個別サイトごとのカスタマイズが制限される場合があります。
- 適している場合:
- 高速な処理が求められるサイト。
- サーバーリソースを効率的に利用したい場合。
2. CGI版PHP
CGI版PHPは、PHPを独立したCGIアプリケーションとして実行する方式です。この場合、PHPはWebサーバーとは別に起動され、サーバーがPHPスクリプトを実行するたびに新しいPHPプロセスが立ち上がります。
- 特徴:
- カスタマイズ性が高い:サイトごとにPHPの設定を変更できるため、特定のサイトで独自の設定が必要な場合に便利です。
- セキュリティの面で有利:サーバーの他のユーザーから隔離されているため、共有サーバー環境でのセキュリティが向上します。
- APCuなどの永続キャッシュは使用不可:CGI版では、プロセスが独立しているため、APCuなどのメモリベースのキャッシュが利用できないことが多いです。
- 適している場合:
- サイトごとにカスタム設定が必要な場合。
- 共有サーバー環境でセキュリティを優先する場合。
もうお分かりですね。今回ご紹介した形式はCGI版PHPになります。
個別のサイトにPHPバージョンを設定できるため1つのサーバーで複数運用する場合使えるテクニックです。
しかし、サイトの高速化を必要とした場合などは、利用できない機能があったりもします。
この方法を利用する際は、こうしたポイントを認識して利用しましょう。
まとめ
1.サーバーの設定されているphpバージョンを確認する
2.「php.cgi」ファイルを作成する
3.「.htaccess」にコードを追記する
4.FTPを使用して、php.cgiファイルと修正した.htaccessをサーバーにアップする
5.phpinfo.phpファイルを作成して、FTPでファイルをサーバーにアップロードする
6.ブラウザで、phpを設定したドメイン+\/phpinfo.php(https://●●.jp/phpinfo.php)にアクセス
してphpバージョンが指定通り設定されているか確認する。
7.安全のため,phpinfo.phpファイルはサーバーから削除する。
8.CGI版PHPの特性を利用して利用する
さくらインターネットは、安定性の高いレンタルサーバーです。わたしも20年近くお世話になっています。
しかし、老舗のレンタルサーバーであるため管理システムは少し古い感じがします。
この、PHPバージョンをドメイン単位で設置できないのも、古いシステムだなーと感じる一つです。
複数のホームページで異なるシステムを使っていると、簡単にPHPのバージョンアップができないと結構不便です。そんなときは、今回の方法を試してみてください。
ちなみに、今から複数のホームページを運用したい。そして違うシステムを利用する可能性がある。
その様な場合、ドメインごとのPHPバージョンも別々に管理できると便利です。
さくらインターネットではできませんが、Xserverならそうした管理が可能です。
エックスサーバーのPHP設定は、ドメインごとに簡単で自由に設定できます。
(しかも、モジュール版PHPとして)
PHPバージョンだけではなくメールの設定やその他諸々、さくらインターネットと比較するとかなり管理の楽なサーバーです。
もし新しくはじめるのなら、Xserverをお勧めします。
正直、長年サーバーを運用していると、さくらインターネットはしんどいことが多いです。経験を積んで鍛えられるのはありがたいのですが、日々の運用は楽な方がいいと思います。