首頁  >  文章  >  運維  >  Apache怎麼設定環境變數

Apache怎麼設定環境變數

(*-*)浩
(*-*)浩原創
2019-11-29 14:45:284644瀏覽

有兩種環境變數會影響Apache HTTP Server。

Apache怎麼設定環境變數

首先,存在由底層作業系統控制的環境變數。這些是在伺服器啟動之前設定的。它們可以在設定檔的擴充功能中使用,也可以使用PassEnv指令傳遞給CGI腳本和SSI。        ( 建議學習:Apache伺服器 )

其次,Apache HTTP Server提供了一種機制,用於在命名變數中儲存訊息,這些變數也稱為環境變數。此資訊可用於控制各種操作,如日誌記錄或存取控制。變數也用作與外部程式(如CGI腳本)通訊的機制。本文將討論了操作和使用這些變數的不同方法。

儘管這些變數稱為環境變量,但它們與底層作業系統控制的環境變數不同。相反,這些變數在內部Apache結構中儲存和操作。

它們僅在提供給CGI腳本和伺服器端包含腳本時才成為實際的作業系統環境變數。如果您希望操作伺服器本身運行的作業系統環境,則必須使用作業系統shell提供的標準環境操作機制。

設定環境變數

基本環境操作

在Apache中設定環境變數的最基本方法是使用無條件的SetEnv指令。也可以使用PassEnv指令從啟動伺服器的shell環境傳遞變數。

有條件的每個請求設定

為了提高靈活性,mod_setenvif提供的指令允許在每個請求的基礎上設定環境變量,具體取決於特定請求的特徵。

例如,只有在特定瀏覽器(用戶代理)發出請求時,或僅在找到特定的Referer [sic]標頭時才能設定變數。透過mod_rewrite的RewriteRule可以獲得更大的靈活性,它使用[E = ...]選項來設定環境變數。

唯一識別碼最後,mod_unique_id將每個請求的環境變數UNIQUE_ID設定為一個值,該值在非常特定的條件下保證在「所有」請求中是唯一的。

標準CGI變數

除了在Apache配置中設定並從shell傳遞的所有環境變數之外,CGI腳本和SSI頁面還提供了一組環境變量,其中包含有關CGI規範所要求的請求的元資訊。

一些警告

使用環境操作指令無法覆寫或變更標準CGI變數。

當suexec用於啟動CGI腳本時,在啟動CGI腳本之前,環境將被清除為一組安全變數。安全變數清單在suexec.c中的編譯時定義。

出於可移植性的原因,環境變數的名稱可能只包含字母,數字和底線字元。另外,第一個字元可能不是數字。傳遞給CGI腳本和SSI頁面時,與此限制不符的字元將被下劃線取代。

一個特殊情況是HTTP標頭,它透過環境變數傳遞給CGI腳本等(見下文)。它們被轉換為大寫,只有短劃線被替換為下劃線;如果標頭包含任何其他(無效)字符,則會以靜默方式刪除整個標頭。

SetEnv指令在請求處理期間運行較晚,這表示SetEnvIf和RewriteCond等指令不會看到使用它設定的變數。

當伺服器透過內部子請求尋找路徑(例如尋找DirectoryIndex或使用mod_autoindex產生目錄清單)時,子請求中不會繼承每個請求的環境變數。此外,由於mod_setenvif採取行動的API階段,因此不會在子請求中單獨評估SetEnvIf指令。

以上是Apache怎麼設定環境變數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn