PHP升级至8.0后版本检测不一致问题咨询
PHP版本不一致问题排查方案
问题描述
- Valet与Composer均显示当前使用PHP 8.0,但项目运行时抛出错误:
Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.0.2". You are running 7.4.30. in /Users/admin/sites/sage10/web/app/themes/sage10/vendor/composer/platform_check.php on line 24
- 升级Valet至PHP 8.0时出现弃用提示:
Deprecated: Method ReflectionParameter::getClass() is deprecated in /Users/admin/.composer/vendor/illuminate/container/Container.php
需要排查的因素
- Web服务器的PHP-FPM版本未切换:Valet依赖PHP-FPM处理Web请求,可能CLI版本切换成功但FPM仍停留在7.4。执行以下操作:
- 强制Valet切换到PHP 8.0:
valet use php@8.0 --force - 重启Valet服务:
valet restart - 检查PHP-FPM运行状态:
brew services list,确认php@8.0-fpm处于started状态
- 强制Valet切换到PHP 8.0:
- CLI与Web环境的PHP路径不一致:终端的CLI PHP和Web服务用的PHP可能是不同路径的版本。
- 终端执行
which php查看CLI版本路径 - 在项目根目录创建
phpinfo.php,内容为:<?php phpinfo(); - 访问该文件,查看
Loaded Configuration File的路径,对比是否与CLI版本路径一致
- 终端执行
- 项目本地版本配置文件干扰:部分项目会通过
.php-version文件指定本地PHP版本,检查项目根目录是否存在该文件,若内容为7.4.30,修改为8.0即可 - Composer缓存导致的平台信息过期:Composer可能缓存了旧的PHP版本检测结果,执行:
- 清除Composer缓存:
composer clear-cache - 重新安装依赖:
composer install
- 清除Composer缓存:
- 全局Composer依赖版本兼容问题:升级时出现的弃用提示是因为旧版本的
illuminate/container不兼容PHP 8.0特性,执行composer global update更新全局Composer依赖即可消除该警告
内容的提问来源于stack exchange,提问作者Justina
相关产品推荐
相关产品推荐

