解决 Homestead 版本与 homestead.box 不对应造成的冲突 
                            
                                                    
                        
                    
                    
  
                    
                    说明
Homestead 包含了两个东西
- Homestead 管理脚本
 - homestead.box 虚拟机盒子
 
接下来独自说明下。
1. Homestead 管理脚本
Homestead 管理脚本的作用是根据你在 ~/.homestead/Homestead.yaml 文件中的配置,来完成:
- Nginx Site 创建
 - 数据库创建
 - 文件夹挂载等任务。
 
版本历史在此 https://github.com/laravel/homestead/relea...
版本记录如下:

2. homestead.box 虚拟机盒子
homestead.box 盒子,所有版本历史在此 ,https://atlas.hashicorp.com/laravel/boxes/...
打不开的用户可以看下下图:

版本对应
Laravel 官方文档虽没有特殊说明,不过经过长时间对 Homestead 的使用得出来的结论:
Homestead 管理脚本和homestead.box 虚拟机盒子的版本是需要互相对应的。
例如说:Homestead 管理脚本 的 3.x 版本,对应盒子是 v0.6.x。
版本对应的分析
需要对应的原因,是因为 homestead.box 虚拟机盒子是一个完整的、指定的运行环境。
拿 homestead.box v0.6.0 版本(非当前的最高版本)来说,里面的 Ubuntu 系统是 16.04,PHP 的版本是 7.0。
如果你使用的是 4.x 版本(当前的最高版本)的话,在 vagrant provision 后,运行 vagrant up 时,就会发生类似以下的错误:

因为当你  vagrant provision 后,「4.x 版本的 Homestead 管理脚本」会在生成 Nginx 站点是创建 fastcgi_pass 的参数为 php7.1-fpm (具体生成的 Nginx 配置信息见 源码),而你的 「homestead.box  v0.6.0」中安装的是 PHP7.0 而不是 PHP7.1 ,所以就会导致上面的报错。
解决冲突
在 《Laravel 入门教程》 一书的环境搭建中,我们使用了  homestead.box  v0.6.0 版本,但是没有对 Homestead 管理脚本 进行版本限制,所以读者会遇到上面的版本冲突问题。
解决方案,就是:
- 备份你的 
.homestead/Homestead.yaml文件; - 命令行切到 
Homestead文件夹下,执行命令git checkout tags/v3.1.0 -b v3.1.0检出 「Homestead 管理脚本」的v3.10版本; - 命令行在  
Homestead文件夹下,执行命令bash init.sh; - 把第一步备份的 
.homestead/Homestead.yaml文件重新覆盖; - 命令行切到 
Homestead文件夹下,执行命令vagrant provision; - 重启 盒子,
vagrant halt, 然后vagrant up; 
done.
          
                    
                    
          
          
                关于 LearnKu
              
                    
                    
                    
 
推荐文章: