2011-08-23 142 views
1

我試圖調整我的代碼以使用不同的數據庫密碼等,具體取決於它運行的環境。例如,我有我的開發服務器,另一個開發人員有他的和生產env有另一套設置。如何使用WAMP服務器訪問環境變量?

因爲我也有一些Kohana項目,所以我選擇使用環境變量KOHANA_ENV來確定應用程序在哪裏運行。

的問題是,在我的WAMP的服務器,而這個工程:

<?php echo getenv('REMOTE_ADDR'); ?> 

,這並不(返回emptyness):

<?php echo getenv('KOHANA_ENV'); ?> 

當我在命令提示符處鍵入set,我看到這個:

KOHANA_ENV=devbox1 

所以它應該工作。

回答

2

WAMP不運行的人跑wampmanager.exe而是什麼Apache服務已經設置爲運行。通常它是LocalService(本地系統帳戶)。

http://support.microsoft.com/kb/821761指出

如果更新環境變量或添加新的環境變量, 先進行更改會影響本地系統帳戶下運行 服務之前,您必須重新啓動計算機。

出現此問題的原因是,在本地系統 帳戶下運行的服務從Services.exe進程繼承它們的環境。在Windows啓動時,Services.exe進程會收到Local 系統帳戶的環境設置。由於Services.exe進程 不使用Windows消息傳遞,因此當它接收到消息時, 指示Windows啓動後值已更改,則Services.exe進程不會更新其環境設置。您 無法強制正在運行的服務確認動態變更 到本地系統帳戶的環境。

事實上當計算機加入環境變量系統環境變量,這個代碼後重新啓動:

<?php echo getenv('YOUR_ENVIRONMENTAL_VARIABLE'); ?> 

將打印的期望是什麼。

+0

我試過'getenv()'和'putenv()',但'putenv()'不能永久保存變量。我怎麼能找到我的服務器上的物理文件,我可以手動保存變量以便永久使用,這意味着它不會在wamp/os重新啓動時取消設置。 (我有dev win/wamp和服務器ubunto/xamp)需要兩個文件 – alamnaryab

0

這聽起來很耳熟..嘗試這個也許,

global $HTTP_ENV_VARS; 
echo $HTTP_ENV_VARS["KOHANA_ENV"] 
+0

沒有。這也返回虛無。 – Henno