Homestead无法生效指定PHP版本(CLI为7.1但Web端运行8.0)
问题原因
- CLI和Web请求的PHP处理程序相互独立:
php -v返回的是命令行(CLI)模式的PHP版本,执行sudo update-alternatives --config php仅会修改CLI模式的默认版本,Web请求由Nginx转发给PHP-FPM服务处理,二者版本没有绑定关系,所以会出现两个场景版本不一致的情况。 - Homestead 12.x 对已存在的站点不会自动同步全局PHP版本配置:你在
Homestead.yaml中设置的全局php: "7.1"仅对新建站点生效,旧站点的Nginx配置仍然绑定之前的PHP 8.x FPM socket,不会自动更新。 - 你之前切换PHP版本后,未同步修改Nginx配置中绑定的FPM版本,导致Web请求仍然走PHP 8.x的处理逻辑。
解决步骤
- 先进入Homestead虚拟机,确认PHP7.1-FPM服务正常运行:
执行命令:systemctl status php7.1-fpm
如果服务未启动,依次执行:sudo systemctl start php7.1-fpm sudo systemctl enable php7.1-fpm - 方法一:手动修改Nginx站点配置
- 进入站点配置目录:
cd /etc/nginx/sites-available/ - 找到你对应项目的配置文件(文件名和你绑定的站点域名一致),打开后找到以下配置行:
fastcgi_pass unix:/var/run/php/php8.x-fpm.sock; - 将其中的版本号修改为7.1,修改后为:
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock; - 保存后执行
nginx -t验证配置语法是否正确,提示success后执行sudo systemctl reload nginx重载配置即可。
- 进入站点配置目录:
- 方法二:通过Homestead配置自动更新(推荐,避免手动改配置后续被覆盖)
- 退出Homestead虚拟机,打开宿主机上的
Homestead.yaml文件,找到对应站点的配置项,单独指定PHP版本:sites: - map: 你的站点域名 to: /home/vagrant/你的项目路径/public php: "7.1" - 在宿主机Homestead目录下执行
vagrant reload --provision,等待重配置完成即可,Homestead会自动生成绑定PHP7.1-FPM的站点配置。
- 退出Homestead虚拟机,打开宿主机上的
补充说明
后续执行composer等PHP相关命令时,建议指定PHP7.1版本执行,避免CLI和Web版本不一致导致的依赖兼容问题,示例命令:php7.1 /usr/local/bin/composer update
内容的提问来源于stack exchange,提问作者Spencer Hill
相关产品推荐
相关产品推荐

