克隆Laravel项目无法运行,composer依赖与PHP8.0不兼容该如何解决?
解决步骤
1. 修正composer.json中的PHP版本约束
找到composer.json里require块下的PHP版本声明,将原有固定的7.3.0改为兼容PHP8的规则:
"php": "^7.3|^8.0",
你之前修改.env文件是无效的,PHP版本约束定义在composer.json中,和.env配置无关。
2. 逐个更新冲突依赖的版本约束
同样在composer.json的require块中,修改以下包的版本规则:
- cache/filesystem-adapter:将原有
^0.4.0改为^1.1.0,该版本开始支持PHP8,同时会自动兼容依赖的cache/adapter-common、cache/tag-interop包 - doctrine/dbal:将原有
2.9.2改为^2.13,该版本及后续2.x分支版本均支持PHP8 - laravel/passport:将原有
^7.2改为^10.0,该版本开始同时支持PHP8和guzzlehttp/guzzle ^7.0,解决和guzzle的版本冲突
3. 执行安装命令
先删除项目根目录下的composer.lock文件和vendor目录,避免旧锁文件的版本限制影响,再执行以下命令:composer update -W
参数-W会自动升级、降级所有关联依赖到符合约束的兼容版本,解决版本锁定问题。
额外注意事项
如果你的项目Laravel版本低于8.x,本身不支持PHP8,以上修改后仍可能出现其他依赖冲突。这种情况下要么将Laravel框架升级到8.x及以上版本,要么将本地PHP版本切换到7.4系列,更节省适配成本。
内容的提问来源于stack exchange,提问作者Mukhlis Raza
相关产品推荐
相关产品推荐

