おそらくみなさんは、CGIを利用している、もしくはCGIを利用しようとお考えのことでしょう。しかし、サーバによって環境はまちまちで、CGI作者が意図しない環境である場合も多々あります。また、パーミッションもCGIのマニュアル通りでは動作しないことも多々あります。ここでは、CG 利用におけるサーバ環境のトピックを説明します。みなさんの使いやすいサーバ選択の目安にして下さい。
CGI実行権限とは、どのアカウント(権限)でCGIがサーバー上で実行されるかということです。意外とサービス説明に掲載されていないことが多いのですが、CGIやパーミッションに自信がない方には意外と重要です。CGI実行権限は2通りあり、owner権限で実行されるか、other権限で実行されるかのどちらかです。結論を言うと、owner権限で実行されるサーバを選択されることをお勧めします。
CGIがあなたのアカウントの権限で実行されます。この場合、パーミッションの設定は非常に簡単になります。CGI本体のみを 704 にすればよくて、その他のファイルやディレクトリ(フォルダ)は、FTPでアップロードするだけでOKとなることが多いです。従って、CGIセッティングのトラブルに見舞われる可能性が低くなります。また、セキュリティーの観点からもowner権限での実行の方が安心できます。CGIが生成するログなどのファイルは、ownerに書込み権限が必要です。その代わり、otherには書込み権限が必要となりません。もっというと、読み込み権限も与える必要がありません。読込み権限を与えなければ、ブラウザーからのアクセスで見られることがありませんので安心です。個人情報が書き込まれるようなログファイルには注意が必要です。
CGIがothe の権限で実行されます。otherとは、ホームページを閲覧する場合に使われる権限で、もっとも権限が低いものとなります。しかしCGIがother権限でしか実行できないとなると、CGIが生成するログなどのファイルのownerがotherとなります。もしくは、事前にファイルを作成しておき、otherに書込み権限を与えなければいけません。また、当然のことながら、読込み権限をotherにも与えなければいけません。つまり、CGIが生成したファイルを、ブラウザーから直接見ることもできてしまうわけです。CGIの作り方、仕様にもよりますが、そんなことまで調べて使う方はほとんどいないでしょう。
CGIセッティングにおいても、パーミッションの設定には注意が必要です。CGIがother権限で実行されるため、CGIが生成するファイルが格納されるディレクトリ(フォルダ)のパーミッションにも意図的に変更する必要があります。概ね 707 で動作するようですが、セキュリティー上、あまりよろしくありません。CGIが出力するファイル名で回避するしかありません。たとえば、拡張子を「.cgi」にするなどです。拡張子が「.cgi」であれば、サーバではCGIファイルと認識されるため、ブラウザーで直接アクセスしても Internal Server Error となり、見ることができないようにすることができます。
もう一点、問題点があります。CGIが生成したファイルのownerはotherになることは前述のとおりですが、この場合、FTPでファイルを削除することはできるけれども、ダウンロードできないサーバもあります。バックアップなどができないわけですから、大変不便です。
一部のプロバイダーでは、Perlのバージョンが4だけだったということがありました。現時点では、Perlのバージョンは5となっており、CGI作者も Perl5を前提に作成することが多くなりました。この場合、Perl4の環境しかないサーバでは動作しませんので、注意が必要です。
Perlには、各種機能を備えたPerlモジュールというものがあります。特に標準モジュールというのは、Perl5にはじめから実装されているモジュールです。しかし、一部のブロバイダーでは標準モジュールが実装されていないところがありますので、注意が必要です。
Perlモジュールを使うと、CGI作者にとっては、さまざまな可能性を得ることができ、高度な機能を実装したCGIを作成することができるようになります。標準モジュール以外は、サービス事業者が意図的に該当モジュールをインストールする必要があります。利用可能なPerlモジュールを公開しているサービス事業者もありますので、もしそのようなCGIを利用する場合には、チェックしましょう。
sendmailとは、主にCGIがメールを送信する場合に使うアプリケーションです。メールを送信する手段としてはもっとも多用されているアプリケーションで、ほとんどのCGI作者は、sendmailに対応したCGIを作成します。しかし、一部のサービスでは、sendmailを使えないところもあります。また、専用のメール送信アプリケーションを提供して、標準のsendmailを使えないようにしているところもあります。もし、メール送信系CGIをご利用をお考えの場合には、必ずsendmailを使えるサービスを選択して下さい。