1

我正在尝试根据其运行的环境调整我的代码以使用不同的数据库密码等。例如,我有我的开发服务器,其他开发人员有他的,生产环境有另一组设置。

由于我也有一些 Kohana 项目,因此我选择使用环境变量 KOHANA_ENV 来确定应用程序的运行位置。

问题是在我的 WAMP 服务器中,虽然这有效:

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

,这不会(返回空虚):

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

当我输入set命令提示符时,我看到:

KOHANA_ENV=devbox1

所以它应该工作。

4

2 回答 2

2

WAMP 不会以运行 wampmanager.exe 的人的身份运行,而是以 Apache 服务设置为运行的身份运行。通常是 LocalService(本地系统帐户)。

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

如果您更新环境变量或添加新的环境变量,您必须重新启动计算机,然后您所做的更改才会影响在本地系统帐户下运行的服务。

出现此问题的原因是在本地系统帐户下运行的服务从 Services.exe 进程继承其环境。当 Windows 启动时,Services.exe 进程接收本地系统帐户的环境设置。由于 Services.exe 进程不使用 Windows 消息传递,因此当它接收到指示在 Windows 启动后值已更改的消息时,Services.exe 进程不会更新其环境设置。您不能强制正在运行的服务确认本地系统帐户环境的动态更改。

实际上,在将环境变量添加到系统环境变量后重新启动计算机时,此代码:

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

将打印预期的内容。

于 2011-08-26T15:08:59.090 回答
0

这敲响了..试试这个也许,

global $HTTP_ENV_VARS;
echo $HTTP_ENV_VARS["KOHANA_ENV"]
于 2011-08-23T14:13:27.450 回答