我正在運行,Apache/2.2.11 (Win32) PHP/5.3.0并且在.htaccess文件中執行了以下操作:SetEnv FOO bar如果我$_ENV在PHP文件中打印出變量,則會得到一個空數組。為什么我的環境變量沒有出現在這里?為什么首先是空的?我確實找到了變量,但是它出現在$_SERVER變量中。由于某種原因,它出現了兩次。為什么是這樣?[REDIRECT_FOO] => bar[FOO] => bar看來我可以使用來獲得它getenv('FOO'),所以也許我應該只使用它。但是我仍然對造成這種情況的原因有些好奇。這是Windows問題嗎?還是發生了什么事?
5 回答

慕仙森
TA貢獻1827條經驗 獲得超8個贊
$_ENV 變量是從運行PHP的環境中導入的,并且取決于您的設置(操作系統,服務器,PHP是作為Apache模塊運行還是在FastCGI下運行,等等),這可能會有很大不同。
在Windows上以標準Apache + mod_php安裝的IIRC中,更改變量的唯一方法$_ENV是更改Windows的環境變量(請參閱參考資料)。在Windows上處理PHP擴展時,這可能很重要,因為其中的某些擴展(例如php_ldap:)只能通過on上的環境vars進行配置$_ENV。

四季花海
TA貢獻1811條經驗 獲得超5個贊
REDIRECT_*
如果您使用的是RewriteRules,則會顯示變量。在我的服務器上,它們也是如此。它可能與在FastCGI下運行有關。如果與suexec結合使用,最有可能清理整個環境的var池。PassEnv
特別是可能需要進行其他配置才能恢復它們。至于為什么getenv()為您工作,我不知道。但是所有現象都是特定于您的服務器和php配置的。詢問服務器故障,他們應該知道。
- 5 回答
- 0 關注
- 585 瀏覽
添加回答
舉報
0/150
提交
取消