我有一个名为DISTANT_APP_ADDR
的环境变量:
$ echo $DISTANT_APP_ADDR
$ 172.17.0.102
我想在我的虚拟主机中使用此变量,因此我已在/etc/apache2/envvars
文件中添加:
export DISTANT_APP_ADDR=${DISTANT_APP_ADDR}
在我的vhost中:
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
,但结果是一样的。
如何将我的env vars传递给我的vhost文件?
答案 0 :(得分:1)
export DISTANT_APP_ADDR=${DISTANT_APP_ADDR}
是胡说八道。如果已经设置了DISTANT_APP_ADDR,它什么也没做,如果没有设置 - 它怎么知道要设置什么?
您也不希望启动脚本拉动您的环境变量。假设你或其他人做了一次apachectl重启,你忘了你因为某种原因改变了你的env变量,30分钟前。这是管理员的噩梦 - 您的网络应用程序“突然”停止工作,但任何配置文件都没有变化。找出问题是非常困难的。
因此,无论如何,请将DISTANT_APP_ADDR设置为常量。或者在httpd.conf或某些vhost配置文件中使用SetEnv指令。但从不使服务器服务依赖于用户在启动服务时碰巧所具有的环境。 (当你的系统启动时,apache启动,启动代码不知道你在.profile中设置变量)。
如果你真的想要用脚射击自己,请添加
echo "DISTANT_APP_ADDR='$DISTANT_APP_ADDR'" > /tmp/apachefile
到你的.profile的末尾,并将该文件包含在你的envvars文件中。