Laravel Homestead文件夹映射无法正常工作

6
我已经按照 Laravel 网站 上描述的步骤安装了 Homestead。安装成功。
我已经配置好了 Homestead.yaml 文件:
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: D:/Code/Homestead/Projects/RestaurantManager
      to: /home/vagrant/RestaurantManager

sites:
    - map: laravel.app
      to: /home/vagrant/RestaurantManager/public

databases:
    - homestead

variables:
    - key: 'APP_ENV'
      value: 'local'
    - key: 'APP_DEBUG'
      value: 'true'

编辑hosts文件:

127.0.0.1   laravel.app
192.168.10.10 laravel.app

我可以运行vagrant up并ssh到虚拟机。

问题在于文件夹映射不起作用。尽管我提供了不同的路径,但映射始终使用相同的路径(D:/Code/Homestead)。您可以在此处查看:

enter image description here

当我尝试本地访问应用程序时,出现“页面不可用”的提示。
5个回答

9
更改配置时的黄金法则是使用 provision 选项重新加载 vagrant 虚拟机,尝试运行以下命令:
vagrant reload --provision

1
首先,您需要知道 Vagrant 自动将主机机器上的 Vagrantfile 当前目录配置为共享文件夹,并将其映射到虚拟机内部的 /vagrant 目录。
要禁用此默认行为,请在您的 Vagrantfile 中添加以下行:
config.vm.synced_folder ".", "/vagrant", disabled: true

其次,您可以通过转义\字符来编写Windows文件路径,如下所示:

folders:
    - map: D:\\Code\\Homestead\\Projects\\RestaurantManager
      to: /home/vagrant/RestaurantManager

⚠重要提示:完成此操作后,请运行:

vagrant reload --provision

或者,您可以在Homestead.yaml中删除整个folders部分,并直接在Vagrantfile中指定共享文件夹映射,如下所示:

config.vm.synced_folder ".", "/home/vagrant/RestaurantManager"

1

Homestead.yaml文件应该包含以下内容:

folders:
    - map: D:/Code/Homestead/Projects # Note 1
      to: /home/vagrant/Code # Note 2

sites:
    - map: laravel.app
      to: /home/vagrant/Code/RestaurantManager/public
  1. 应该与您的操作系统文件结构匹配
  2. Homestead的文件结构,您不应更改。

您的hosts文件还需要更新以删除对127.0.0.1(即本地主机)的引用:

192.168.10.10 laravel.app

1

由于 vagrant-hostsupdater,我遇到了类似的问题。只需使用卸载插件即可。

vagrant plugin uninstall vagrant-hostsupdater

然后再次提供机器

vagrant reload --provision

0

对于 Windows 系统,当映射到特定文件夹时,请使用反斜杠 \。请尝试以下方法:

folders:
    - map: D:\Code\Homestead\Projects\RestaurantManager
      to: /home/vagrant/RestaurantManager

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接