CakePHP 4.x安装Authentication 2.x时composer报错无法解析依赖集
问题根因
- 冲突核心是
zendframework/zend-diactoros是laminas/laminas-diactoros的曾用名,二者互相冲突 - 你指定安装的
cakephp/authentication:2.0.0版本过老,仍依赖旧名称的zendframework/zend-diactoros包 - 当前环境中CakePHP 4.2.10已经依赖了新名称的
laminas/laminas-diactoros 2.8.0,无法同时兼容旧名包
解决方案
优先方案(推荐)
安装适配了新依赖的高版本Authentication 2.x组件,执行以下命令即可:
composer require "cakephp/authentication:^2.10"
Authentication 2.3及以上的2.x版本均已将依赖替换为
laminas/laminas-diactoros,和CakePHP 4.x的依赖完全兼容,不会再出现冲突。
如果执行后仍有报错,可添加参数允许composer调整关联依赖版本:
composer require "cakephp/authentication:^2.10" -W
特殊场景方案(仅当必须使用Authentication 2.0.0时使用)
如果业务原因必须使用2.0.0版本,可在项目根目录的composer.json中添加replace配置,告知composer旧的zend包已经被新的laminas包替代:
{ "replace": { "zendframework/zend-diactoros": "*" } }
添加后再执行原安装命令即可。
安装验证
安装完成后执行以下命令加载插件,确认无报错即为安装成功:
bin/cake plugin load Authentication
内容的提问来源于stack exchange,提问作者Paulo
相关产品推荐
相关产品推荐

