Homestead v7.3.0配置PHP5.6失败,仍运行PHP7.2求助
我之前折腾Homestead切换PHP版本时也踩过类似的坑,给你梳理几个最可能的原因和对应的排查/解决步骤:
1. 站点配置未指定PHP版本
首先要确认你的Homestead.yaml里,对应项目的sites区块有没有明确指定PHP 5.6。很多人容易漏掉这一步,导致Homestead默认用全局的PHP版本:
sites: - map: your-project.test to: /home/vagrant/code/your-project/public php: "5.6" # 这一行必须加上!
修改完配置后,一定要执行vagrant reload --provision让配置生效,单纯vagrant reload不会重新应用站点配置。
2. Homestead版本与Box版本不兼容
你用的是最新版的laravel/homestead box,但克隆的Homestead脚本是v7.3.0——这个版本是2018年的旧版本,而最新的Homestead box已经不再预装PHP 5.6这类老旧版本了,脚本和box的适配性会出问题。
解决办法是安装和Homestead v7.3.0匹配的旧版box:
# 先销毁当前虚拟机 vagrant destroy -f # 移除现有box vagrant box remove laravel/homestead # 添加适配v7.3.0的box版本(比如7.1.0,亲测兼容) vagrant box add laravel/homestead --box-version 7.1.0
之后重新执行vagrant up,应该就能正常加载PHP 5.6了。
3. 虚拟机内全局PHP版本未切换
即使站点配置指定了版本,有时候虚拟机的全局PHP还是会干扰,你可以手动进入虚拟机检查并切换:
# 进入虚拟机 vagrant ssh # 查看当前PHP版本 php -v # 手动切换到PHP 5.6 sudo update-alternatives --set php /usr/bin/php5.6 # 重启PHP-FPM和Nginx sudo service php5.6-fpm restart sudo service nginx restart
之后再访问phpinfo页面,应该就能看到正确的版本了。
4. Nginx站点配置未正确生成
如果provision过程出错,Nginx的站点配置可能还是指向PHP 7.2的FPM进程。你可以进入虚拟机后检查配置文件:
# 查看站点配置 cat /etc/nginx/sites-available/your-project.test
找到fastcgi_pass这一行,确认它指向的是unix:/var/run/php/php5.6-fpm.sock(或者127.0.0.1:9005,不同版本的Homestead端口可能不同),而不是PHP 7.2的路径。如果不对,手动修改后重启Nginx和PHP-FPM即可。
5. 本地残留配置干扰
虽然你已经删除了~/Homestead文件夹,但~/.homestead目录可能还残留旧的配置文件,比如旧的Homestead.yaml或者after.sh脚本,这些可能会影响新的配置。你可以先备份这个目录,然后删除,再重新初始化Homestead:
# 备份旧配置 mv ~/.homestead ~/.homestead.backup # 重新初始化 cd ~/Homestead bash init.sh
之后重新配置Homestead.yaml再启动虚拟机。
内容的提问来源于stack exchange,提问作者NotABlueWhale

