2016-05-28 68 views
0

設置我看到幾個帖子和解決方案,在這裏,但至今沒有人似乎爲我工作。我在安裝了env插件的Windows 7 64位上使用Vagrant 1.8.1,並在Vagrantfile中啓用了config.env.enable。 [更新]我可能做錯了什麼或錯過了什麼?PHP無法得到ENV變量由流浪

我想設置一個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文件

; arbitrary, set host IP for Vagrant 
vm_host_ip=192.168.33.10 

這也沒有工作設置VAR =價值。我想(在httpd.conf)中加入 SetEnv VMHOSTIP "192.168.33.10"

然後(在一個共享的PHP文件)我基本上希望殼的print_r兩個$ _ SERVER和$ _ENV,看看上述任何嘗試都能夠正常設置環境var,以便PHP可以訪問它的值。

是差點工作的唯一的事情,是使用內聯提供呼應export命令的初步嘗試。

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

完整的週期時,設置可變我會做

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

,因爲這樣做的.profile文件會被流浪漢用戶所擁有 - 在你的情況下,文件歸根源可以以問題結束。

如果仍然出現問題,則可以提供塊,模仿你手動做什麼

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 
+0

謝謝我會嘗試,並告知,如果它的工作 –

+0

嗨內做source,試了一下,它似乎工作正常,但它沒有把變種放入環境中。完成之後,我SSH進入主機並執行命令'echo $ MY_SVR_HOST'並期待值,但它是空的(沒有任何內容打印到shell)。我在你的答案結尾添加了來自「如果你仍然有問題」塊的2個命令。 –

+0

它的奇怪,它應該只是工作,甚至不需要這個env插件。你打什麼?我嘗試使用默認的'ubuntu/wily64'方塊,然後登錄我有'vagrant @ ubuntu:〜$ echo $ MY_SVR_HOST 192.168.33.10' –