如何为不同的语言(PHP或RUBY)添加linux环境变量


How to add a linux environment variable for different language (PHP or RUBY)

我想为我用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时都会执行它。