Vagrant启动失败求助:Laravel Homestead配置报错排查
Laravel Homestead启动报错:YAML语法错误(Psych::SyntaxError)
问题描述
我是Laravel Homestead新手,已安装VirtualBox和Vagrant,按步骤配置后启动Vagrant时出现以下错误:
Traceback (most recent call last): 17: from C:/HashiCorp/Vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/bin/vagrant:214:in `<main>' 16: from C:/HashiCorp/Vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/bin/vagrant:214:in `new' 15: from C:/HashiCorp/Vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/environment.rb:189:in `initialize' 14: from C:/HashiCorp/Vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/environment.rb:998:in `process_configured_plugins' 13: from C:/HashiCorp/Vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/environment.rb:817:in `vagrantfile' 12: from C:/HashiCorp/Vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/environment.rb:817:in `new' 11: from C:/HashiCorp/Vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/vagrantfile.rb:31:in `initialize' 10: from C:/HashiCorp/Vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/config/loader.rb:116:in `load' 9: from C:/HashiCorp/Vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/config/loader.rb:116:in `each' 8: from C:/HashiCorp/Vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/config/loader.rb:119:in `block in load' 7: from C:/HashiCorp/Vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/config/loader.rb:119:in `each' 6: from C:/HashiCorp/Vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/config/loader.rb:126:in `block (2 levels) in load' 5: from C:/HashiCorp/Vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/config/v2/loader.rb:37:in `load' 4: from C:/Users/me/Homestead/Vagrantfile:29:in `block in <top (required)>' 3: from C:/HashiCorp/Vagrant/embedded/mingw64/lib/ruby/2.7.0/psych.rb:277:in `load' 2: from C:/HashiCorp/Vagrant/embedded/mingw64/lib/ruby/2.7.0/psych.rb:390:in `parse' 1: from C:/HashiCorp/Vagrant/embedded/mingw64/lib/ruby/2.7.0/psych.rb:456:in `parse_stream' C:/HashiCorp/Vagrant/embedded/mingw64/lib/ruby/2.7.0/psych.rb:456:in `parse': (<unknown>): could not find expected ':' while scanning a simple key at line 6 column 1 (Psych::SyntaxError)
我的Homestead.yaml配置如下:
--- ip: "192.168.5.20" memory: 8192 cpus: 2 provider: virtualbox authorize: c:/Users/me/.ssh/id_rsa.pub keys: - c:/Users/me/.ssh/id_rsa folders: - map: c:/workspace to: /home/vagrant/workspace type: nfs sites: - map: code.test to: /home/vagrant/workspace/code php: "8.1" - map: cmsmy-pro.dev.local to: /home/vagrant/workspace/my-pro/public php: "7.2" type: cms-core - map: www.my-pro.com to: /home/vagrant/workspace/my-pro/public/www php: "7.2" type: cms-core - map: cmsmy-pro.dev.local to: /home/vagrant/workspace/cmsmy-pro/public php: "8.0" - map: phpmyadmin.mysql to: /home/vagrant/workspace/phpmyadmin php: "8.0" databases: - homestead features: - mysql: true - mariadb: false - postgresql: false - ohmyzsh: false - webdriver: false services: - enabled: - "mysql" # - disabled: # - "postgresql@11-main" #ports: # - send: 33234 # MySQL/MariaDB # to: 2500 # - send: 5020 # to: 5020 # - send: 58720 # PostgreSQL # to: 5473 # - send: 2314 # Mailhog # to: 4723 # - send: 2341 # to: 2341 # - send: 58711 # to: 58711
请问问题出在哪里?
问题原因
错误提示明确指向YAML语法解析失败,核心问题在services节点的格式:你给enabled添加了列表项前缀-,但Homestead的services配置是对象结构,enabled和disabled是对象下的键,而非列表元素。这种错误导致YAML解析器无法识别合法的键值对格式。
修复方法
修改Homestead.yaml中的services部分,去掉enabled前面的-,并保持缩进一致:
services: enabled: - "mysql" # disabled: # - "postgresql@11-main"
如果需要启用多个服务,直接在enabled的列表中添加即可,例如:
services: enabled: - "mysql" - "nginx"
额外注意事项
你的sites节点存在重复的map: cmsmy-pro.dev.local配置,虽然不会引发当前的语法错误,但后续可能导致站点路由冲突,建议清理重复条目。
内容的提问来源于stack exchange,提问作者user19836500
相关产品推荐
相关产品推荐

