我在这里看到了一些帖子和解决方案,但到目前为止,它们似乎都不适合我。我在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 --provision
或vagrant destroy, vagrant up
答案 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