[an error occurred while processing this directive]
[APACHE DOCUMENTATION]

Apache HTTP Server Version 1.3

mod_cgiモジュール

このモジュールは mod_cgi.c ファイルに含まれ、 デフォルトでコンパイルされます。 これは CGI スクリプトを実行する機能を提供します。 このモジュールによってmime typeがapplication/x-httpd-cgi のファイルが処理されます。

概要

mime typeが application/x-httpd-cgi、または ハンドラが cgi-script (Apache 1.1 またはそれ以降) のファイルは CGI スクリプトとみなし、サーバ上で実行し、そのスクリプトは クライアントに結果を出力します。 AddType命令で設定したファイル名 の拡張子か、または ScriptAliasで設定した ディレクトリで始まるかで判断します。

サーバが CGI スクリプトを起動した時、DOCUMENT_ROOT という 環境変数を CGI スクリプトの環境に追加します。 この変数にはDocumentRootで設定した 値が格納されます。

CGI 環境変数

以下のCGI specificationの様に、実装された CGI の仕様に基づいて、サーバは CGI 環境変数を設定します:
REMOTE_HOST
これはコンパイルオプションにMINIMAL_DNSしなかった場合に設定します。
REMOTE_IDENT
これはIdentityCheckonの時にだけ設定します。
REMOTE_USER
これは CGI スクリプトが認証を必要とした場合にだけ設定されます。


CGI のデバッグ

CGI スクリプトのデバッグは昔から困難です。 主な理由として、正しく実行されず異常終了するスクリプトの出力 (標準出力と標準エラー出力)の調査が不可能だったからです。 以下の命令は Apache 1.2 以降に含まれ、異常が発生した際、 更に詳細なエラーをログとして蓄積する機能を提供します。

CGI ログファイルフォーマット

設定がされている時、CGI の実行が異常時のログを蓄積します。 実行時に異常となった CGI スクリプトは、数行の原因情報をログ蓄積します。 最初の2行の書式は常に次の通りです。:
  %% [time] request-line
  %% HTTP-status CGI-script-filename
もし、CGI スクリプトを実行できないエラーの時、ログは次のように 2行追加されます。:
  %%error
  error-message
あるいは、スクリプトが返してきたヘッダ情報が合わない(間違えていた)場合のエラーの時は、次の情報がログが蓄積されます。:
  %request
  受信した全ての HTTP リクエストヘッダ
  POST または PUT (どちらかであれば)
  %response
  CGI スクリプトによって出力された全てのヘッダ
  %stdout
  CGI の標準出力
  %stderr
  CGI の標準エラー出力
( %stdout と %stderr の項目が空白の場合があるが、恐らく標準出力と標準エラー出力の両方とも帰っていないと考えられる)

命令

ScriptLog

Syntax: ScriptLog filename
Default: none
Context: resource config
Status: mod_cgi

ScriptLog命令は CGI スクリプトのエラーログファイルを設定します。ScriptLogに何も設定しないとエラーログは作成されません。設定すると、CGI のエラーのログを設定された値のファイル名に蓄積します。相対パスでファイル名を指定すると、server rootで指定したパスの配下に指定したファイルになります。

このログは、子の処理が作動するユーザとして開かれるでしょう。すなわち主なUser命令で指定されたユーザです。これは、スクリプトログに対するユーザの書き込みが可能である必要があるディレクトリか、またはファイルが手動で作られる必要があり、ユーザによる書き込みが可能であるように設定しているディレクトリの、どちらかを意味します。もしメインのログディレクトリにスクリプトログを置いたら、子の処理が作動するユーザによる書き込みを可能にするために、ディレクトリのパーミッションを変えてはいけません。

CGIスクリプトを書くとき、スクリプトのロギングは特徴のデバッギングをすることになっており、作動しているサーバでは持続しては動かないことに注意してください。スピードや効率では最適化されず、もしデザインされたものと違うやり方で使われれば、セキュリティの問題が起こるかもしれません。

ScriptLogLength

Syntax: ScriptLogLength size
Default: 10385760
Context: resource config
Status: mod_cgi

ScriptLogLengthは CGI スクリプトログファイルの最大サイズを指定できます。情報量が多い(全てのリクエスト、全ての出力)CGI エラーログを出力し続けると、ログファイルが肥大化します。 際限無く肥大化する事を防止するために、この命令は CGI ログファイルの最大を設定できるようになっています。ファイル容量がこのサイズを越えると、それ以上の情報を追加しなくなります。

ScriptLogBuffer

Syntax: ScriptLogBuffer size
Default: 1024
Context: resource config
Status: mod_cgi

限られた容量のファイルに、PUT または POSTのエントリボディを蓄積する際、すぐにファイルが大きくなってし まう事を回避するために使います。 デフォルトでは、1024 バイトまでをログ蓄積します。この値は変更可能です。


Apache HTTP Server Version 1.3

検索文字
このJAPACHE!ニュースグループへ ( japache.mod.cgi ) | JAPACHE!ニュースについて | JAPACHE!ホームページへ

Index Home The English original manual is here.


このページの情報に関わる、ご質問、お問い合わせは、 japache@infoscience.co.jpまで。