<-
Apache HTTP 服务器 2.4 > Apache模块mod_cgi

Apache模块mod_cgi

描述:CGI脚本的执行
状态:基础
模块标识符:cgi_module
源文件:mod_cgi.c

摘要

任何具有处理程序的文件都 cgi-script将被视为CGI脚本,并由服务器运行,并将其输出返回给客户端。文件通过具有包含AddHandler指令定义的扩展名的名称或位于ScriptAlias 目录中来获取此处理程序 。

有关将CGI脚本与Apache一起使用的介绍,请参见我们的《使用CGI进行动态内容》教程。

在unix下使用多线程MPM时, mod_cgid应使用该模块代替该模块。在用户级别,这两个模块基本相同。

为了向后兼容,还将为任何带有mime-type的文件激活cgi-script处理程序application/x-httpd-cgi。不建议使用magic mime类型。

支持Apache!

主题

指令

错误修正清单

也可以看看

最佳

CGI环境变量

服务器将按照CGI规范中的说明设置CGI环境变量,并具有以下规定:

PATH_INFO
如果该AcceptPathInfo指令显式设置为,则此选项 将不可用off。如果AcceptPathInfo未给出默认行为,则mod_cgi它将接受路径信息( /more/path/info在URI中的脚本文件名之后进行跟踪),而核心服务器将为带有附加路径信息的请求返回404 NOT FOUND错误。省略AcceptPathInfo指令与Onmod_cgi请求设置指令具有相同的效果。
远程主机
仅当设置HostnameLookups为时才设置on(默认情况下为关闭),并且如果反向访问主机地址的DNS查找确实找到了主机名。
REMOTE_IDENT
仅当IdentityCheck设置为 on且访问主机支持ident协议时才设置。请注意,由于可以轻易地伪造该变量的内容,因此不能依赖该变量的内容,并且如果客户端和服务器之间存在代理,则通常完全没有用。
REMOTE_USER
仅当CGI脚本需要验证时才设置。

该模块还利用核心功能 ap_add_common_varsap_add_cgi_vars 添加环境变量,例如:

DOCUMENT_ROOT
设置相关DocumentRoot指令的内容。
服务器名称
与请求相关的标准域名。
SERVER_ADDR
服务请求的虚拟主机的IP地址。
SERVER_ADMIN
设置相关ServerAdmin指令的内容。

对于详尽的列表,建议编写一个基本的CGI脚本,该脚本以方便的格式转储Apache传递的所有环境变量。

最佳

CGI调试

传统上,调试CGI脚本很困难,主要是因为无法研究无法正常运行的脚本的输出(标准输出和错误)。这些指令可在错误发生时提供更详细的日志记录。

CGI日志文件格式

配置后,CGI错误日志会记录任何无法正常执行的CGI。每个无法运行的CGI脚本都会记录多行信息。前两行始终采用以下格式:

%% [time] request-line
%% HTTP-status CGI-script-filename

如果错误是无法运行CGI脚本,则日志文件将另外包含两行:

%%error
error-message

或者,如果错误是脚本返回错误的头信息(通常是由于脚本中的错误所致)的结果,则会记录以下信息:

%request
All HTTP request headers received
POST or PUT entity (if any)
%response
All headers output by the CGI script
%stdout
CGI standard output
%stderr
CGI standard error

(如果脚本在标准输出或标准错误上未输出任何内容,则可能缺少%stdout和%stderr部分)。

最佳

ScriptLog 指令

描述:CGI脚本错误日志文件的位置
句法:ScriptLog file-path
内容:服务器配置,虚拟主机
状态:基础
模块:mod_cgimod_cgid

ScriptLog指令设置CGI脚本错误日志文件。如果未ScriptLog给出,则不会创建错误日志。如果给出,则任何CGI错误都将记录到作为参数给出的文件名中。如果这是相对文件或路径,则相对于ServerRoot

ScriptLog logs/cgi_log

该日志将以运行子进程的用户( main User指令中指定的用户)身份打开。这意味着脚本日志所在的目录需要该用户可写,或者文件需要手动创建并设置为该用户可写。如果将脚本日志放置在主日志目录中,请不要更改目录权限以使其对运行子进程的用户可写。

请注意,脚本日志记录是编写CGI脚本时的调试功能,而不是在运行的服务器上连续激活。它不是针对速度或效率进行优化的,如果以非设计方式使用,可能会带来安全问题。

最佳

ScriptLogBuffer 指令

描述:将在脚本日志中记录的最大PUT或POST请求数量
句法:ScriptLogBuffer bytes
默认:ScriptLogBuffer 1024
内容:服务器配置,虚拟主机
状态:基础
模块:mod_cgimod_cgid

记录到文件中的任何PUT或POST实体主体的大小都受到限制,以防止如果接收到较大的主体,则日志文件会过快增大。默认情况下,最多记录1024个字节,但是可以使用此伪指令进行更改。

最佳

ScriptLogLength 指令

描述:CGI脚本日志文件的大小限制
句法:ScriptLogLength bytes
默认:ScriptLogLength 10385760
内容:服务器配置,虚拟主机
状态:基础
模块:mod_cgimod_cgid

ScriptLogLength可用于限制CGI脚本日志文件的大小。由于该日志文件记录了每个CGI错误的大量信息(所有请求标头,所有脚本输出),因此它可以成长为一个大文件。为了防止无限增长引起的问题,可以使用此伪指令为CGI日志文件设置最大文件大小。如果文件超过此大小,将不会再写入任何信息。

可用语言: zh  |  fr  |  ja  |  KO 

最佳

注释

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。