如何使用WAMP服务器访问环境变量?

时间:2011-08-23 13:56:42

标签: environment-variables wamp getenv

我正在尝试调整我的代码以使用不同的数据库密码等,具体取决于它运行的环境。例如,我有我的开发服务器,其他开发人员有他的生产环境还有另一组设置。< / p>

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

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

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

,这不会(返回空白):

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

当我在命令提示符中键入set时,我看到了:

KOHANA_ENV=devbox1

所以它应该有用。

2 个答案:

答案 0 :(得分:2)

WAMP不会像运行wampmanager.exe的人那样运行,而是运行Apache服务的运行方式。通常它是LocalService(本地系统帐户)。

http://support.microsoft.com/kb/821761表示

  

如果更新环境变量或添加新的环境变量,   您必须在所做的更改生效之前重新启动计算机   在本地系统帐户下运行的服务。

     

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

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

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

将打印预期的内容。

答案 1 :(得分:0)

这铃响了......试试吧,

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