亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

<-
Apache > HTTP Server > 文檔 > 版本2.2 > 模塊
   致謝 | 譯者聲明 | 本篇譯者:金步國(guó) | 本篇譯稿最后更新:2006年1月24日 | 獲取最新版本

Apache模塊 mod_cgi

說明在非線程型MPM(prefork)上提供對(duì)CGI腳本執(zhí)行的支持
狀態(tài)基本(B)
模塊名cgi_module
源文件mod_cgi.c

概述

任何具有MIME類型application/x-httpd-cgi或者被cgi-script處理器處理的文件都將被作為CGI腳本對(duì)待并由服務(wù)器運(yùn)行,它的輸出將被返回給客戶端。可以通過兩種途徑使文件成為CGI腳本,一種是文件具有已由AddType指令定義的擴(kuò)展名,另一種是文件位于ScriptAlias目錄中。

當(dāng)服務(wù)器調(diào)用一個(gè)CGI腳本時(shí)會(huì)往運(yùn)行環(huán)境中添加一個(gè)叫做DOCUMENT_ROOT的變量。這個(gè)變量將包含DocumentRoot指令的值。

要得到對(duì)Apache中使用CGI腳本的介紹,參看使用CGI產(chǎn)生動(dòng)態(tài)內(nèi)容。

在UNIX下使用多線程型的MPM時(shí),應(yīng)該使用模塊mod_cgid代替本模塊。在用戶層面,這兩個(gè)模塊本質(zhì)上是相同的。

top

CGI環(huán)境變量

Apache將按照CGI規(guī)范設(shè)置環(huán)境變量,有以下幾個(gè):

PATH_INFO
如果顯式設(shè)置了AcceptPathInfo指令為 off ,這個(gè)變量將不可用。如果沒有明確設(shè)置AcceptPathInfo ,默認(rèn)的行為是mod_cgi將會(huì)接受路徑信息(URI里腳本文件名之后的/more/path/info),即使服務(wù)器核心對(duì)請(qǐng)求的附加路徑信息返回"404 NOT FOUND"錯(cuò)誤。省略AcceptPathInfo指令與將它設(shè)置為 On 對(duì)mod_cgi請(qǐng)求具有相同的效果。
REMOTE_HOST
這個(gè)變量只有在HostnameLookups指令被設(shè)置為"on"(默認(rèn)是"off")并且對(duì)訪問主機(jī)的DNS反查確實(shí)找到了主機(jī)名時(shí)才被設(shè)置。
REMOTE_IDENT
這個(gè)變量只有在IdentityCheck被設(shè)置為 on 并且訪問主機(jī)支持識(shí)別協(xié)議時(shí)才被設(shè)置。注意這個(gè)變量不能信賴,因?yàn)樗苋菀妆患倜。而且如果客戶端與服務(wù)器之間存在代理的話,這個(gè)變量通常完全沒有用處。
REMOTE_USER
這個(gè)變量只有當(dāng)CGI腳本需要身份驗(yàn)證時(shí)才被設(shè)置。
top

CGI腳本的調(diào)試

調(diào)試CGI腳本一直以來都很困難,主要是因?yàn)樵谀_本不能正確運(yùn)行時(shí)不可能研究它的輸出(stdout和stderr)。這些指令為發(fā)生錯(cuò)誤時(shí)提供了更詳細(xì)的錯(cuò)誤日志。

CGI日志文件格式

配置好以后,CGI錯(cuò)誤日志會(huì)記錄任何沒有正確運(yùn)行的CGI。每個(gè)運(yùn)行失敗的CGI腳本都有幾行信息被記錄。頭兩行總是這樣的格式:

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

如果錯(cuò)誤是CGI腳本無法執(zhí)行,日志文件會(huì)包含以下額外的兩行:

%%error
error-message

或者,如果錯(cuò)誤是腳本執(zhí)行結(jié)果返回了不正確的頭信息(經(jīng)常是由于腳本內(nèi)部的bug),會(huì)記錄以下兩行:

%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上輸出可能會(huì)沒有%stdout和%stderr部分。

top

ScriptLog 指令

說明CGI腳本錯(cuò)誤日志文件的位置
語法ScriptLog file-path
作用域server config, virtual host
狀態(tài)基本(B)
模塊mod_cgi, mod_cgid

ScriptLog指令設(shè)置了CGI腳本錯(cuò)誤日志文件的位置。如果沒有設(shè)置ScriptLog ,就不會(huì)創(chuàng)建錯(cuò)誤日志。如果設(shè)置了,所有CGI錯(cuò)誤都會(huì)被記入作為指令參數(shù)的文件中。如果是一個(gè)相對(duì)路徑則以ServerRoot為參照。

示例

ScriptLog logs/cgi_log

此日志會(huì)以運(yùn)行子進(jìn)程的用戶身份打開,比如由主服務(wù)器配置部分的User指令指定的用戶。這意味著,或者該用戶對(duì)腳本日志所在目錄具有寫權(quán)限,或者日志文件由此用戶手工創(chuàng)建并設(shè)置為可寫。如果你把腳本日志放在你的主日志目錄中,不要為了讓運(yùn)行子進(jìn)程的用戶可以寫日志而改變目錄的權(quán)限。

注意,腳本日志是為了給創(chuàng)建CGI腳本提供一個(gè)調(diào)試特性,而不是要在運(yùn)行服務(wù)時(shí)持續(xù)保持活動(dòng)狀態(tài)。它沒有為速度或是效率作優(yōu)化,而且與專門設(shè)計(jì)的那些特性不同,在某種程度上它會(huì)存在安全問題。

top

ScriptLogBuffer 指令

說明記入日志文件的PUT或POST請(qǐng)求頭的最大數(shù)量
語法ScriptLogBuffer bytes
默認(rèn)值ScriptLogBuffer 1024
作用域server config, virtual host
狀態(tài)基本(B)
模塊mod_cgi, mod_cgid

限制記入日志文件的PUT或者POST內(nèi)容的大小,防止如果接收到很大內(nèi)容時(shí)日志文件的尺寸增加得太快太大。默認(rèn)地,最多紀(jì)錄1024字節(jié),但這個(gè)數(shù)字可以用此指令改變。

top

ScriptLogLength 指令

說明日志文件的大小限制(字節(jié))
語法ScriptLogLength bytes
默認(rèn)值ScriptLogLength 10385760
作用域server config, virtual host
狀態(tài)基本(B)
模塊mod_cgi, mod_cgid

ScriptLogLength指令可以用于限制CGI腳本文件的大小。由于日志文件對(duì)每個(gè)CGI錯(cuò)誤紀(jì)錄(所有請(qǐng)求頭、所有腳本輸出)許多信息,它有可能會(huì)變成一個(gè)很大的文件。為了防止無限制的增長(zhǎng)引起的問題,這個(gè)指令可以用來給CGI日志文件的大小設(shè)置一個(gè)上限。如果文件大小達(dá)到了這個(gè)限制,就不會(huì)再有信息被寫入日志。