我已经在基于云的云服务器上安装了基于PHP的应用程序。
我使用代码getenv('something');
来为应用程序使用环境变量。我在我的本地主机和heroku上试过它,两个地方似乎都运行正常。
我在/etc/environment
的天蓝云中的linux服务器上添加了环境变量,当我使用printenv
命令时,我可以看到我所有的环境,例如{{1}等等..
我重新启动了服务器,apache2服务器,但没有运气。
我不确定如何查看任何错误或查看哪个环境变量无效或者其中任何一个是否正常工作。我在网上搜索了很多东西,它说你可以从天蓝色的仪表板上做到这一点,但我也没有运气。
所以基本上我现在唯一能看到的是login_username = root
答案 0 :(得分:0)
我成功地重现了你的问题,在我的场景中,如果在终端php getenv.php
中直接执行php命令,我们就可以成功获取环境变量。所以它可能是apache的问题。
如果我们在/etc/init.d/apache2
深入了解apache2的脚本,我们可以找到以下部分:
ENV="env -i LANG=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
if [ "$APACHE_CONFDIR" != /etc/apache2 ] ; then
ENV="$ENV APACHE_CONFDIR=$APACHE_CONFDIR"
fi
if [ "$APACHE_ENVVARS" != "$APACHE_CONFDIR/envvars" ] ; then
ENV="$ENV APACHE_ENVVARS=$APACHE_ENVVARS"
fi
因此ENV
变量被覆盖,我们需要在/etc/apache2/envvars
中设置变量。
以下是我的解决方案,在/etc/environment
中设置变量:
export VAR="FOO"
然后在/etc/apache2/envvars
中添加以下文字部分:
if [ -f /etc/environment ]; then
. /etc/environment
fi
最后重新启动apache。
如有任何疑问,请随时告诉我。