【发布时间】:2013-11-10 20:26:21
【问题描述】:
我已阅读问题/答案here,但我不明白如何在 /etc/environment 中设置变量。如果我编辑文件,我需要重新启动我的机器还是简单地注销我当前的用户(或登录一个新用户?)。
我想设置一个全局变量来表示我机器上的网站处于“开发”或“测试”模式。我不想为每个项目都设置这个(无论是使用 PHP、Java/Tomcat、NodeJS 等)。我知道(对于 Apache)我可以通过以下方式设置环境变量:
- 直接来自 php 和
putenv()(这似乎没用,因为我想避免试图找出文件在哪个服务器上的逻辑) - 使用 .htaccess
SetEnv ENVIRONMENT 'local'(这需要我为每个服务器复制此文件/代码,不理想) - 使用虚拟主机指令
SetEnv ENVIRONMENT 'local'(如果我使用的是虚拟主机,几乎在所有情况下我都是,但又需要我一遍又一遍地复制/粘贴代码) - 在 httpd-conf
SetEnv ENVIRONMENT 'local'中(这只适用于 apache,我希望它也适用于 NodeJS 服务器)
我并不是说我不能做 #4(并且有选择地将 #3 应用于 NodeJS 服务器)。但我认为这是使用 /etc/environment 的一个很好的理由。正如我上面所说,我已经编辑了文件(在第一次创建它之后)并尝试了以下组合,但似乎都不起作用:
ENVIRONMENT='local'
ENVIRONMENT=local
export ENVIRONMENT='local'
export ENVIRONMENT=local
我说它们都不起作用,因为我没有在输出中找到变量:
print_r($_SERVER);
print_r($_ENV);
echo(getenv('ENVIRONMENT'));
【问题讨论】:
-
我遇到了类似的问题,找不到合适的解决方案。问题似乎是您通过控制台看到的环境变量不会保留在服务器上,因此您的应用程序无法使用。如果有人可以就如何持久化这些变量提供建议,那就太好了。 (在部署时设置变量,在运行时读取)
标签: php apache environment-variables