PHP无法通过Vagrant获取ENV变量

时间:2016-05-28 20:53:28

标签: php vagrant

我在这里看到了一些帖子和解决方案,但到目前为止,它们似乎都不适合我。我在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,但也无效。注意,bootstrap文件中有一行重新启动apache。

我尝试在php.ini文件中设置var = value

; arbitrary, set host IP for Vagrant
vm_host_ip=192.168.33.10

那也行不通。我试过(在httpd.conf中)添加 SetEnv VMHOSTIP "192.168.33.10"

然后(在共享的php文件中)我基本上想要在$ _SERVER和$ _ENV上使用print_r来查看上述任何尝试是否能够正确设置环境var以便PHP可以访问其值。 / p>

唯一接近工作的是初始尝试使用内联提供来回显导出命令。但是,如果我执行以下操作,它仅设置环境变量:

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

[编辑] 可能是我做错了什么。基于以上所述,我有什么遗失的吗?现在,我只是在我进入主机服务器后手动获取文件?

提前致谢。

[编辑] 我在未来可能会帮助其他人的情况下添加内联配置块。

# 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 --provisionvagrant destroy, vagrant up
  • 的完整周期时设置变量

1 个答案:

答案 0 :(得分:1)

我愿意

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

这样做.profile文件将由vagrant用户拥有 - 在您的情况下,该文件由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