PHP无法获取Vagrant设置的ENV变量



我在这里看到了一些帖子和解决方案,但到目前为止,它们似乎都不适合我。我在Windows 7 64位上使用Vagrant 1.8.1,并在Vagrantfile中安装并启用了env插件config.env.enable。[更新]我可能做错了什么或错过了什么?

我正在尝试设置一个string=123abc类型的环境变量。我从Vagrantfile中的内联配置开始:

config.vm.provision "shell", inline: <<-SHELL
echo "export MY_SVR_HOST=192.168.33.10" > /home/vagrant/.profile
SHELL

我试过下面的source /home/vagrant/.profile(在回声之后),但它不起作用。。

然后,我尝试将源代码行添加到配置文件(bootstrap.sh)中

此外(在引导程序文件中)尝试了vagrant ssh && source /home/vagrant/.profile && exit,但也不起作用。注意,引导文件中有一行用于重新启动apache。

我试图在php.ini文件中设置一个var=值

; arbitrary, set host IP for Vagrant
vm_host_ip=192.168.33.10

这也没有奏效。我尝试(在httpd.conf中)添加SetEnv VMHOSTIP "192.168.33.10"

然后(在一个共享的php文件中),我基本上希望shell在$_SERVER和$_ENV上打印_r,看看上面的任何尝试是否能够正确设置环境变量,以便php可以访问其值。

唯一接近工作的是最初尝试使用内联提供来回显export命令。然而,只有当我执行以下操作时,它才会设置环境变量:

vagrant up --provision
vagrant ssh
source /home/vagrant/.profile

[编辑]可能是我做错了什么。基于以上内容,我还缺少什么吗?。现在,我将在ssh进入主机服务后手动获取文件源?

提前谢谢。

[EDIT]我正在添加内联供应块,以备将来帮助他人。

# privileged false acts like a sudo, so we can do commands as root.
config.vm.provision "shell", privileged: false, inline: <<-SHELL
echo "export MY_SVR_HOST=192.168.33.10" > /home/vagrant/.profile
# Add 2 lines (comment and command) to .bashrc if they are not already there.
if grep -Fxq "# source our profile" /home/vagrant/.bashrc
then
# do nothing since we found the target text.
echo "we found the source line we need in .bashrc n"
else
# Add the lines (comment and command) to .bashrc 
echo "# source our profile" | tee -a /home/vagrant/.bashrc
echo "source /home/vagrant/.profile" | tee -a /home/vagrant/.bashrc
fi
SHELL

这种方法:

  • 是基于公认答案和其他研究中提供的一些有用提示
  • 设置执行vagrant reload --provision或完成vagrant destroy, vagrant up循环时的变量

我会做

config.vm.provision "shell", privileged: false, inline: <<-SHELL
echo "export MY_SVR_HOST=192.168.33.10" > /home/vagrant/.profile
SHELL

这样一来,.profile文件将由流浪用户所有——在您的情况下,该文件由root用户所有,因此可能会出现问题。

如果您仍然有问题,您可以在供应块中执行source,以便完全模拟您手动执行的

config.vm.provision "shell", privileged: false, inline: <<-SHELL
echo "export MY_SVR_HOST=192.168.33.10" > /home/vagrant/.profile
source /home/vagrant/.profile
SHELL

最新更新