使用Apache / FastCGI访问催化剂Web应用程序中的shell环境变量

时间:2012-02-07 23:22:48

标签: apache environment-variables fastcgi catalyst

我在Amazon EC2 Linux实例上有一个催化剂Web应用程序,其内容由Apache / FastCGI提供。 每当我启动一个新实例时,我需要获取数据库服务器的内部IP并通过在启动时运行此命令将其分配给环境变量:

export MYSQL_HOST=$(dig +short ec2-*-*-*-*.compute-1.amazonaws.com);

我有一个perl模块,它应该在查找$ MYSQL_HOST环境变量值后创建数据库连接。

我的问题很明确,因为FastCGI无法直接访问这些shell环境变量。

我看到你可以使用Apache mod_env中的PassEnv来访问环境变量,你可以使用Apache指令FcgidInitialEnv为FastCGI环境变量赋值(如果我在这里硬编码一个值,我可以使用我的Perl模块)。

我的Apache配置技巧非常基本,所以我想知道是否有人可以推荐一种方法将这些绑定在一起,以便我的perl模块访问$ MYSQL_HOST。

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您正在尝试阅读环境变量,请查看$ c-> engine-> env:

use Data::Dumper;
sub debugEnv :Local
{
    my ( $self, $c ) = @_;
    $c->res->headers->header("Content-type"=> 'text/plain');
    my $req = $c->req;
    $c->response->body('$c->engine->env is : '.Dumper($c->engine->env)
                      ."c->req is $req\n"
                     .'c->config is ' .Dumper($c->config)
                      ."\nENV is : ".Dumper(\%ENV))
}