我已经读过问题/答案here,但我不知道如何在/etc/environment.中设置变量如果我编辑这个文件,我是否需要重新启动我的机器,或者只是注销我的当前用户(或者登录一个新用户?)。
我想设置一个全局变量来表示我机器上的网站处于“开发”或“测试”模式。我不想为每个项目(无论是使用PHP、Java/Tomcat、NodeJS等)都设置这个。我知道(对于Apache)我可以通过以下方式设置环境变量:
使用putenv()
直接从php
SetEnv ENVIRONMENT 'local'
(这将要求我为每个服务器复制此文件/代码,这并不理想)SetEnv ENVIRONMENT 'local'
(如果我使用虚拟主机,几乎在所有情况下都是这样,但再次要求我一遍又一遍地复制/粘贴代码)<代码>H212<代码>H113(这将仅适用于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'));
发布于 2013-11-29 00:05:34
您想要做的是使用Apache配置文件。您需要访问配置文件夹和httpd.conf文件(或修改后的版本)。然后,您可以使用此方法将httpd.conf配置为动态加载配置文件
Include conf.d/*.conf
在conf.d文件夹中放置特定的环境配置文件。
server-environment-dev.conf示例:
SetEnv ENVIRONMENT "local"
server-environment-prod.conf示例:
SetEnv ENVIRONMENT "production"
这些设置将在您的php代码中显示为可用的环境变量。这种方法允许您保持vhost文件、.htaccess和其他配置文件与环境无关。
由于一些进程/用户限制,Apache中的PHP无法读取etc/environment、etc/profile.d、.bash_profile、.profile等文件。您可以对变量执行bash、smash和crash操作,并在您的终端中看到它们的设置,但它们不会显示在phpinfo()中,除非您通过Apache配置文件进行设置。
对于NodeJS,你可以启动应用程序,传入你的环境变量,或者你可以通过多种方式设置NODE_ENV,如果你想成为用户不可知的话,包括你的.bash_profile和可能的etc/environment文件。
Node的一本好书:http://www.hacksparrow.com/running-express-js-in-production-mode.html
发布于 2013-10-31 08:28:49
因此,我假设您在某个地方有一个全局配置文件。为什么不在这个文件中放一个可以更改的常量呢?尝试在服务器级别上进行设置要容易得多。
define('ENVIRONMENT', 'testing');
if(ENVIRONMENT == 'testing') {
echo 'We\'re just testing';
}
发布于 2016-01-14 07:57:08
如果您仍然无法获取环境变量:
您可能需要在中编辑real httpd.conf
~/库/应用程序支持/应用程序/MAMP PRO/
而不是
/应用程序/MAMP/conf/apache/
此外,您可能需要使用getenv()而不是$_ENV
https://stackoverflow.com/questions/19696230
复制相似问题