Kenji Arisawa
E-mail: arisawa@aichi-u.ac.jp
Aichi University
Kurozasa 370, Miyoshi-cho
Aichi, Japan

2002/02/01
Powered by Pegasus

CGI

CGI プログラム Pegasus では以下の条件を満たすファイルが CGI プログラムとなります。 1. 実行ファイルである。(others に対して実行可になっている) 2. 拡張子が html, cgi, http の何れかである 3. 名前がピリオドで始まっていない 4. ドキュメント空間に置かれている *.html 拡張子が html のファイルは、http ヘッダは自動的に付加されています。 従って HTML 形式のドキュメントとしての内容を出力するようにプログラム します。 Pegasus では CGI プログラムのもっとも普通の形式です。 *.cgi 拡張子が cgi のファイルは、http ヘッダの多くは自動的に付加されています。 これは Apache の CGI との互換性のために残してありますが、余り使われない でしょう。 *.http 拡張子が http のファイルは、http ヘッダの全てをプログラムによって処理でき ます。言い方を変えれば処理する必要があります。 エラー処理などの特殊な用途を想定しています。 CGI の実行環境 ramfs が提供されています。 Plan9 ではCGI 記述に rc がよく使用されます。 CGI timeout バグのある CGI からシステムを守るために一定時間の間に処理が完了しない場合 には、その CGI プログラムは強制的に終了させます。 この時間を timeout と言います。 timeout は 5 秒間に設定されていますが、この値は httpd の引数で与える事も できます。 CGI の環境変数 Pegasus は多数の環境変数を持っていますが、しかしながら現在の版では多くはま だ確定してはいません。確定的なのは以下に掲げる少数の環境変数だけです。 GATEWAY_INTERFACE SERVER_NAME SERVER_SOFTWARE SERVER_PROTOCOL REQUEST_METHOD REMOTE_ADDR QUERY_STRING HTTP_HEADER 他の環境変数は将来廃止されるかも知れないし、また名称が変更されるかも知れま せん。 CGI の名前空間 CGI プログラムが見る名前空間は、サービス空間の中でのファイル /etc/namespace.cgi で再編成できます。 このファイルが存在しない場合、あるいは存在しても再編成をしていない 場合には、CGI プログラムが見る名前空間はサービス空間と同じです。 /etc/namespace.cgi CGI 環境において、ユーザの実行ファイルを追加したり、ライブラリを追加したい 場合に利用するとよいでしょう。 このファイルはサービス空間の中のファイルの配置の再編成を行います。 例えばユーザ alice のディレクトリ /usr/alice/web/etc/bin や /usr/alice/web/etc/sys/lib はサービス空間の中では /etc/bin や /etc/sys/lib となります。従って /etc/namespace.cgi の中で bind -a /etc/bin /bin bind -a /etc/sys/lib /sys/lib と書く事によって、これらを サービス空間の /bin や /sys/lib に混ぜることができます。