我想为我用PHP和Ruby编写的不同应用程序添加一个linux环境变量。
它的目标是区分"生产"answers"开发"linux环境。
如何使用PHP和Ruby访问linux环境变量(例如:APPLICATION_ENV="production")
感谢
编辑1:
我的第一个解决方案是:
vhost:中的Apache/PHP
SetEnv APPLICATION_ENV 'production'
对于Ruby:
export APPLICATION_ENV='production'
puts ENV['APPLICATION_ENV']
然而,这是两个值相同的地方。。。没有将其合并到一个地方的解决方案吗使用/etc/environment的示例
编辑:
我的问题的答案在这里详细介绍:在Apache 中插入变量头
为变量设置中心位置的一个简单解决方案是将其放在/etc/environment
中,并将其包含在/etc/init.d/httpd
中。
$ vim /etc/environment
APPLICATION_ENV=production
$ vim /etc/init.d/httpd
if [ -f /etc/environment ]; then
. /etc/environment
fi
然后用/etc/init.d/httpd restart
重新启动apache,它应该可以了
如果您使用的是ubuntu 16.04或类似产品,请将/etc/init.d/httpd
替换为/etc/init.d/apache2
如果您不想将环境文件包含在apache中,可以直接将代码放在/etc/apache2/envvars
中,例如放在文件的末尾:export HELLO='dear'
对于命令行,执行
export APPLICATION_ENV='production'
按照多蒙的建议,在调用代码之前。您可以编写一个简短的包装器bash脚本,在一行中完成所有这些,比如这个
#!/bin/bash
export APPLICATION_ENV='production'
ruby /path/to/your/script.rb
对于apache,请确保已加载mod_env,并包含行
SetEnv APPLICATION_ENV production
在站点的vhost-config或.htaccess.中
最后,您可以在系统上全局设置APPLICATION_ENV(使用您的发行版支持的任何内容),然后使用将值传递给您的web应用程序
PassEnv APPLICATION_ENV
最简单的方法是直接在shell命令中指定环境变量。然后您可以通过Ruby中的ENV
对象访问它们。
例如,创建一个名为env.rb
:的文件
puts ENV['APPLICATION_ENV']
并在外壳中运行,如下所示:
APPLICATION_ENV='production' ruby env.rb
它应该打印出"生产"一词。
或者,使用export
命令:
export APPLICATION_ENV='production'
ruby env.rb
您可能需要将export
行添加到某个配置文件中。例如,如果您使用bash,则将其添加到~/.bashrc
,每次启动新shell时都会执行它。