Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为不同语言(PHP或RUBY)添加linux环境变量_Php_Ruby_Environment Variables_Development Environment_Production - Fatal编程技术网

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

如何为不同语言(PHP或RUBY)添加linux环境变量,php,ruby,environment-variables,development-environment,production,Php,Ruby,Environment Variables,Development Environment,Production,我想为用PHP和Ruby编写的不同应用程序添加一个linux环境变量 它的目标是区分“生产”和“开发”linux环境 如何使用PHP和Ruby访问linux环境变量(例如:APPLICATION_ENV='production')? 谢谢 编辑1: 我的第一个解决方案是: 对于vhost中的Apache/PHP: SetEnv APPLICATION_ENV 'production' 对于Ruby: 导出应用程序\u ENV='production' put ENV['APPLICATION

我想为用PHP和Ruby编写的不同应用程序添加一个linux环境变量

它的目标是区分“生产”和“开发”linux环境

如何使用PHP和Ruby访问linux环境变量(例如:APPLICATION_ENV='production')?

谢谢

编辑1:

我的第一个解决方案是:

对于vhost中的Apache/PHP:

SetEnv APPLICATION_ENV 'production'
对于Ruby:

导出应用程序\u ENV='production'
put ENV['APPLICATION\u ENV']

然而,这是两个相同值的地方。。。没有办法将它合并在一个地方吗?< /强> PAR可以使用/ETC/Web/P> 编辑:


我的问题的答案在这里有详细说明:

最简单的方法是直接在shell命令中指定环境变量。然后可以通过Ruby中的
ENV
对象访问它们

例如,创建一个名为
env.rb
的文件:

put ENV['APPLICATION\u ENV']
然后在shell中运行它,如下所示:

APPLICATION_ENV='production' ruby env.rb
它应该打印出“生产”一词

或者,使用
导出
命令:

export APPLICATION_ENV='production'
ruby env.rb

您可能需要将
导出
行添加到某个配置文件中。例如,如果使用bash,将其添加到
~/.bashrc
中,每次启动新shell时都会执行该命令。

最简单的方法是直接在shell命令中指定环境变量。然后可以通过Ruby中的
ENV
对象访问它们

例如,创建一个名为
env.rb
的文件:

put ENV['APPLICATION\u ENV']
然后在shell中运行它,如下所示:

APPLICATION_ENV='production' ruby env.rb
它应该打印出“生产”一词

或者,使用
导出
命令:

export APPLICATION_ENV='production'
ruby env.rb

您可能需要将
导出
行添加到某个配置文件中。例如,如果使用bash,则将其添加到
~/.bashrc
,并且每次启动新shell时都会执行该命令。

对于命令行,请执行

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中

最后,您可以在您的系统上全局设置应用程序_ENV(使用发行版支持的任何工具),然后使用

PassEnv APPLICATION_ENV

对于命令行,执行以下操作

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中

最后,您可以在您的系统上全局设置应用程序_ENV(使用发行版支持的任何工具),然后使用

PassEnv APPLICATION_ENV

为变量设置中心位置的一个简单解决方案是将其放入
/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
中,例如在文件末尾:
导出HELLO='dear'

为变量设置中心位置的简单解决方案是将其放入
/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'

代码是从命令行运行还是从web服务器运行(如果是web服务器,则是哪个)?php代码是从命令行运行,apache serveur代码是从命令行运行,ruby代码是从命令行运行?我的发行版:Centos 6.4代码是从命令行运行还是从web服务器运行(如果是web服务器,哪个)?php代码从命令行运行,apache serveur和ruby代码从命令行运行您使用的是什么发行版?我的发行版:Centos 6.4thanks,但是这项技术不允许在apache中访问php中的变量?@bastien:在php中,您可以获得如下环境变量:
$\u ENV[“应用程序环境”]
如果我运行导出应用程序\u ENV='production',那么在使用运行php脚本时,$\u ENV中没有任何内容Apache@BastienD:您必须在正确的配置文件中设置它。例如,在
/etc/apache2/envvars
中导出它。然后将
PassEnv应用程序_ENV
添加到
/etc/apache2/sites enabled/*
中的正确文件中两个位置是否具有相同的值…没有将其合并到一个位置的解决方案?谢谢,但是这项技术不允许在apache中访问php中的变量?@BastienD:在php中,可以获得如下环境变量:
$\u ENV['APPLICATION\u ENV']
如果我运行导出应用程序\u ENV='production',那么在使用运行php脚本时,$\u ENV中没有任何内容Apache@BastienD:您必须在正确的配置文件中设置它。例如,在
/etc/apache2/envvars
中导出它。然后将
PassEnv应用程序_ENV
添加到
/etc/apache2/sites enabled/*
中的正确文件中两个位置是否具有相同的值…没有将其合并到一个位置的解决方案?是的,这很好。但是,这两个位置具有相同的值。我已编辑了我的问题。是的,但是