我正在尝试调整我的代码以使用不同的数据库密码等,具体取决于它运行的环境。例如,我有我的开发服务器,其他开发人员有他的生产环境还有另一组设置。< / p>
由于我也有一些Kohana项目,我选择使用环境变量KOHANA_ENV来确定它的运行位置。
问题在于我的WAMP服务器,虽然这有效:
<?php echo getenv('REMOTE_ADDR'); ?>
,这不会(返回空白):
<?php echo getenv('KOHANA_ENV'); ?>
当我在命令提示符中键入set
时,我看到了:
KOHANA_ENV=devbox1
所以它应该有用。
答案 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"]