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 に混ぜることができます。