apache - 如何在 apache vhost 中使用环境变量

标签 apache environment-variables fastcgi

我有一个名为 DISTANT_APP_ADDR 的环境变量:

$ echo $DISTANT_APP_ADDR
$ 172.17.0.102

我想在我的虚拟主机中使用这个变量,所以我在 /etc/apache2/envvars 文件中添加了:

export DISTANT_APP_ADDR=${DISTANT_APP_ADDR}

在我的虚拟主机中:

FastCgiExternalServer /var/www/cgi-bin/php5.external -host ${DISTANT_APP_ADDR}:9000

但是当我重新启动 apache 时,出现错误:

$ service apache2 restart
$ FastCgiExternalServer /var/www/cgi-bin/php5.external: failed to resolve "" to exactly one IP address

通过将 envvars 文件中的 ${DISTANT_APP_ADDR} 替换为其有效的实际值。

我还必须在我的 vhost 文件中放置一个 PassEnv DISTANT_APP_ADDR,但结果是一样的。

如何将我的环境变量传递到我的虚拟主机文件?

最佳答案

export DISTANT_APP_ADDR=${DISTANT_APP_ADDR}

是废话。如果 DISTANT_APP_ADDR 已经设置,它什么都不做,如果没有设置——它怎么知道要设置什么?

您也不希望启动脚本提取您的环境变量。假设您或其他人执行了一次 apachectl restart,而您忘记了 30 分钟前出于某种原因更改了环境变量。这是管理员的噩梦——您的 Web 应用程序“突然”停止工作,但任何配置文件都没有更改。找出问题所在将非常非常困难。

因此,请务必将 DISTANT_APP_ADDR 设置为常量。或者在 httpd.conf 或一些 vhost 配置文件中使用 SetEnv 指令。但是永远不要使服务器服务依赖于用户启动服务时碰巧拥有的环境。 (当您的系统启动并启动 apache 时,启动代码并不知道您正在 .profile 中设置变量)。

如果你真的真的想搬起石头砸自己的脚,加

echo "DISTANT_APP_ADDR='$DISTANT_APP_ADDR'" > /tmp/apachefile

到您的 .profile 的末尾,并将该文件包含到您的 envvars 文件中。

关于apache - 如何在 apache vhost 中使用环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20858878/

相关文章:

apache - 无法分配内存 : fork: Unable to fork new process : server apache, 如何找到源并修复它?

c++ - C++中枚举环境变量(跨平台)

laravel - .env 变量在 Laravel 项目中的 Vue 组件中返回未定义

PHP fastcgi 在 Lighttpd 服务器上返回 403

docker - Docker-拒绝使用Nginx连接到套接字的权限

wordpress - 如何制作 www.mywebsite.com/blog?

linux - Subversion with Apache 和权限问题

java - Android 简单的 HTTP 请求?

java - 在命令提示符下运行js

PHP 无法连接到 MS SQL Express 2008