<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Apache模塊 mod_cgi | [說明](#calibre_link-11) | 在非線程型MPM(`prefork`)上提供對CGI腳本執行的支持 | | --- | --- | | [狀態](#calibre_link-12) | 基本(B) | | [模塊名](#calibre_link-13) | cgi_module | | [源文件](#calibre_link-14) | mod_cgi.c | ### 概述 任何具有MIME類型`application/x-httpd-cgi`或者被`cgi-script`處理器處理的文件都將被作為CGI腳本對待并由服務器運行,它的輸出將被返回給客戶端。可以通過兩種途徑使文件成為CGI腳本,一種是文件具有已由`AddType`指令定義的擴展名,另一種是文件位于`ScriptAlias`目錄中。 當服務器調用一個CGI腳本時會往運行環境中添加一個叫做`DOCUMENT_ROOT`的變量。這個變量將包含`DocumentRoot`指令的值。 要得到對Apache中使用CGI腳本的介紹,參看[使用CGI產生動態內容](#calibre_link-215)。 在UNIX下使用多線程型的MPM時,應該使用模塊`mod_cgid`代替本模塊。在用戶層面,這兩個模塊本質上是相同的。 ## CGI環境變量 Apache將按照[CGI規范](http://hoohoo.ncsa.uiuc.edu/cgi/)設置環境變量,有以下幾個: PATH_INFO 如果顯式設置了`AcceptPathInfo`指令為 `off` ,這個變量將不可用。如果沒有明確設置`AcceptPathInfo` ,默認的行為是`mod_cgi`將會接受路徑信息(URI里腳本文件名之后的`/more/path/info`),即使服務器核心對請求的附加路徑信息返回"404 NOT FOUND"錯誤。省略`AcceptPathInfo`指令與將它設置為 `On` 對`mod_cgi`請求具有相同的效果。 REMOTE_HOST 這個變量只有在`HostnameLookups`指令被設置為"`on`"(默認是"off")并且對訪問主機的DNS反查確實找到了主機名時才被設置。 REMOTE_IDENT 這個變量只有在`IdentityCheck`被設置為 `on` 并且訪問主機支持識別協議時才被設置。注意這個變量不能信賴,因為它很容易被假冒。而且如果客戶端與服務器之間存在代理的話,這個變量通常完全沒有用處。 REMOTE_USER 這個變量只有當CGI腳本需要身份驗證時才被設置。 ## CGI腳本的調試 調試CGI腳本一直以來都很困難,主要是因為在腳本不能正確運行時不可能研究它的輸出(stdout和stderr)。這些指令為發生錯誤時提供了更詳細的錯誤日志。 ### CGI日志文件格式 配置好以后,CGI錯誤日志會記錄任何沒有正確運行的CGI。每個運行失敗的CGI腳本都有幾行信息被記錄。頭兩行總是這樣的格式: ``` %% [<var class="calibre40">time</var>] <var class="calibre40">request-line</var> %% <var class="calibre40">HTTP-status</var> <var class="calibre40">CGI-script-filename</var> ``` 如果錯誤是CGI腳本無法執行,日志文件會包含以下額外的兩行: ``` %%error <var class="calibre40">error-message</var> ``` 或者,如果錯誤是腳本執行結果返回了不正確的頭信息(經常是由于腳本內部的bug),會記錄以下兩行: ``` %request <var class="calibre40">All HTTP request headers received</var> <var class="calibre40">POST or PUT entity (if any)</var> %response <var class="calibre40">All headers output by the CGI script</var> %stdout <var class="calibre40">CGI standard output</var> %stderr <var class="calibre40">CGI standard error</var> ``` 如果腳本沒有在stdout和stderr上輸出可能會沒有%stdout和%stderr部分。 ## ScriptLog 指令 | [說明](#calibre_link-18) | CGI腳本錯誤日志文件的位置 | | --- | --- | | [語法](#calibre_link-19) | `ScriptLog file-path` | | [作用域](#calibre_link-20) | server config, virtual host | | [狀態](#calibre_link-21) | 基本(B) | | [模塊](#calibre_link-22) | `mod_cgi`, `mod_cgid` | `ScriptLog`指令設置了CGI腳本錯誤日志文件的位置。如果沒有設置`ScriptLog` ,就不會創建錯誤日志。如果設置了,所有CGI錯誤都會被記入作為指令參數的文件中。如果是一個相對路徑則以`ServerRoot`為參照。 ### 示例 ``` ScriptLog logs/cgi_log ``` 此日志會以運行子進程的用戶身份打開,比如由主服務器配置部分的`User`指令指定的用戶。這意味著,或者該用戶對腳本日志所在目錄具有寫權限,或者日志文件由此用戶手工創建并設置為可寫。如果你把腳本日志放在你的主日志目錄中,**不要**為了讓運行子進程的用戶可以寫日志而改變目錄的權限。 注意,腳本日志是為了給創建CGI腳本提供一個調試特性,而不是要在運行服務時持續保持活動狀態。它沒有為速度或是效率作優化,而且與專門設計的那些特性不同,在某種程度上它會存在安全問題。 ## ScriptLogBuffer 指令 | [說明](#calibre_link-18) | 記入日志文件的PUT或POST請求頭的最大數量 | | --- | --- | | [語法](#calibre_link-19) | `ScriptLogBuffer bytes` | | [默認值](#calibre_link-24) | `ScriptLogBuffer 1024` | | [作用域](#calibre_link-20) | server config, virtual host | | [狀態](#calibre_link-21) | 基本(B) | | [模塊](#calibre_link-22) | `mod_cgi`, `mod_cgid` | 限制記入日志文件的PUT或者POST內容的大小,防止如果接收到很大內容時日志文件的尺寸增加得太快太大。默認地,最多紀錄1024字節,但這個數字可以用此指令改變。 ## ScriptLogLength 指令 | [說明](#calibre_link-18) | 日志文件的大小限制(字節) | | --- | --- | | [語法](#calibre_link-19) | `ScriptLogLength bytes` | | [默認值](#calibre_link-24) | `ScriptLogLength 10385760` | | [作用域](#calibre_link-20) | server config, virtual host | | [狀態](#calibre_link-21) | 基本(B) | | [模塊](#calibre_link-22) | `mod_cgi`, `mod_cgid` | `ScriptLogLength`指令可以用于限制CGI腳本文件的大小。由于日志文件對每個CGI錯誤紀錄(所有請求頭、所有腳本輸出)許多信息,它有可能會變成一個很大的文件。為了防止無限制的增長引起的問題,這個指令可以用來給CGI日志文件的大小設置一個上限。如果文件大小達到了這個限制,就不會再有信息被寫入日志。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看