首頁 > 後端開發 > php教程 > 為什麼 PHP 中的 $_ENV 和 $_SERVER 都可以存取 SetEnv 變數?

為什麼 PHP 中的 $_ENV 和 $_SERVER 都可以存取 SetEnv 變數?

Patricia Arquette
發布: 2024-11-08 07:57:02
原創
963 人瀏覽過

Why are SetEnv variables accessible in both $_ENV and $_SERVER in PHP?

PHP 中的環境變數:了解SetEnv、$_ENV 和$_SERVER

在Apache 中,環境變數FOO 是使用SetEnv 設定的.htaccess 檔案中的指令。但是,PHP 可以在 $_ENV 或 $_SERVER 中顯示此變數。為什麼會發生這種情況,是什麼導致 $_SERVER 中出現複雜的條目?

空 $_ENV 變數

預設情況下,PHP 的 $_ENV 變數保持為空,除非使用 Variables_order 指令 指令包含 Ephp.ini 中包含 Ephp。由於效能問題,這在生產環境中通常不會啟用。要解決此問題,請將variables_order設為EGPCS,這使得$_ENV可存取。

$_SERVER中的SetEnv

在.htaccess中使用SetEnv時會出現混亂,因為它將$_SERVER 中的變數,而不是 $_ENV。此行為不直觀,可能會導致誤解。

$_SERVER 中的條目

SetEnv 可能會導致 $_SERVER 中出現重複條目,例如 [REDIRECT_FOO] 和 [FOO] ]。發生這種情況是因為 SetEnv 建立了一個常規環境變數 (FOO) 和一個重定向別名 (REDIRECT_FOO`)。

getenv 函數替代

getenv 函數總是可用來擷取環境變量,無論 $_ENV 的 PHP 設定如何。如果您遇到 $_ENV 問題,建議使用 getenv。

附加說明

  • getenv 環境變數名稱不區分大小寫。
  • variables_order 會影響 $_SERVER 和 $_ENV 中變數的順序,而不是 getenv 的行為。

以上是為什麼 PHP 中的 $_ENV 和 $_SERVER 都可以存取 SetEnv 變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板