レンタルサーバ上にphpで作成したプログラムがある場合、引っ越し先のサーバでも正常に動作するか事前に確認しておく必要があります。レンタルサーバの機能一覧などを見てみますと、phpのバージョンと動作モードが記載されています。動作モードには、モジュール版とCGI版とがあるようです。まず、現在借りているレンタルサーバで、phpがCGI版として動作しているか、モジュール版として動作しているかを調べる方法をまとめておきます。
CGI版とモジュール版の違い
CGI版
webサーバ(たいていはApache)とは別プロセスでphpを動作させるものです。拡張子がphpというファイルを、php-cgiという外部プログラムに渡して動かすということになります。メリットは、セキュリティ面です。Apacheとは別ユーザでphpが動作します。つまり、phpのコードごとのユーザでphpを動作させるため、別ユーザとの干渉という危険がありません。デメリットは、Apacheとは別ユーザで動作させるため、速度が若干遅い(モジュール版と比較して)という点を挙げることができます。共用サーバはCGI版が多いようです。
モジュール版
たいていのwebサーバはApacheです。このApacheの機能の一部としてphpを動作させるのがモジュール版phpです。Apacheのモジュールmod_phpなどでphpを動作させます。そのため、動作が速いというメリットがあります。一方、デメリットは、セキュリティ面の不安です。phpがウェブサーバのユーザで動作するため、共用サーバの場合、各ユーザごとに実行権限を制御ができません。つまり、別ユーザのファイルを読んでしまうといっとことができてしまうようです。
CGI版とモジュール版の確認方法
通常、共用サーバでphpを動かす場合、CGI版かモジュール版かをレンタルサーバ会社がプラン毎に決めているはずです。場合によっては、CGI版とモジュール版のどちらで動作させるかを選択できるレンタルサーバもあることでしょう。ですから、共用サーバの場合、CGI版かモジュール版かのどちらかでphpは動作することになります。しかしながら、実際にはCGI版とモジュール版とは共存できるもののようです。ですから、ここから先の記述は、おもに共用サーバを借りていて、CGI版かモジュール版のどちらか一方で動作しているという前提での話になります。
まず、以下のコードを記述したphpのファイルを作成します。ファイル名は何でもよいのですが、たとえば、hoge.phpとします。
<?php
phpinfo();
?>
続いて、hoge.phpをFTPソフトを使ってウェブサーバからアクセスできるところにアップロードします。
次に、アップロードしたhoge.phpにブラウザを使ってアクセスすると下図のようにphpの情報を見ることができます。
Server API欄を見てみると、CGI/FastCGIと記載されています。わたしが借りているレンタルサーバの場合、CGI版でPHPが動作しているようです。
モジュール版の場合、Server API欄は、「Apache 2.x Handler」や「Apache」といった記載になるようです。
phpの動作モードが異なるサーバにphpプログラムを移行する場合、エラーが出ることもあるようです。できるだけ楽に移行するためにバージョンや動作モードを合せておくと良いかもしれませんね。
