Apache HTTP サーバ バージョン 2.4
説明: | CGI スクリプトの実行 |
---|---|
ステータス: | Base |
モジュール識別子: | cgi_module |
ソースファイル: | mod_cgi.c |
ハンドラ cgi-script
が指定されているファイルは CGI スクリプトとして扱われ、
サーバにより実行され、その出力がクライアントに返されます。
ファイルは、AddHandler
ディレクティブに指定された 拡張子を名前に含むか、
ScriptAlias
ディレクトリに存在することによりこのハンドラになります。
Apache で CGI スクリプトを使用するためのイントロダクションは、 CGI による動的コンテンツ を参照してください。
Unix でマルチスレッドの MPM を使っている場合は、このモジュールの
代わりに mod_cgid
を使う必要があります。
ユーザレベルではこの二つのモジュールは本質的には同一です。
後方互換性のため、 MIME タイプが application/x-httpd-cgi
であるファイルでも cgi-script ハンドラが有効になります。この特殊な MIME タイプを
使う方法は非推奨です。
サーバは CGI 規格 で決められている CGI 環境変数を設定します。以下のものは、条件付きで設定されます。
AcceptPathInfo
ディレクティブが明示的に off
に設定されている場合は設定されません。デフォルトの、
AcceptPathInfo
が
指定されていないときの振る舞いでは、mod_cgi
はパス情報
(URI のスクリプトのファイル名の後に続く /more/path/info
) を
受け付けますが、コアはサーバはパス情報のあるリクエストに
対して 404 NOT FOUND エラーを返します。AcceptPathInfo
ディレクティブを
省略すると、mod_cgi
へのリクエストに対して
On
を
設定したのと同じ効果になります。HostnameLookups
が on
(デフォルトでは off です)
で、アクセスしているホストのアドレスの DNS
の逆引きが実際にホスト名を見つけたときにのみ設定されます。IdentityCheck
が on
に設定されていて、アクセスしているホストが
ident プロトコルをサポートしているときにのみ設定されます。
これは簡単に偽ることができ、クライアントとサーバの間に
プロキシがあればまったく役に立たないので、
この変数の値は信用できないということに注意してください。
CGI スクリプトのデバッグは、正しく動作していないスクリプトの出力 (標準出力とエラー) を調べることができないために、難しい状態が続いていました。 これらのディレクティブはより詳細なエラーのログ収集を提供します。
設定されているときには、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 はありません)。