2011-08-23 62 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