CodeIgniter 4集成Google登录时遇Monolog兼容性错误求助
解决CodeIgniter 4集成Google登录时Monolog与PSR-Log兼容错误
这个错误是因为Monolog版本与PSR-Log接口的方法声明不兼容导致的:Monolog的emergency方法添加了Stringable|string类型约束,但对应的PSR-Log接口未定义该约束,从而触发致命错误。
以下是具体解决步骤:
1. 调整Monolog版本至CI4兼容范围
- 打开项目根目录的
composer.json,检查Monolog的版本配置。CodeIgniter 4对Monolog有特定兼容版本,过高版本会与内置PSR-Log接口冲突。 - 执行命令降级到适配CI4的稳定版本:
composer require monolog/monolog:^2.9 - 删除冲突的依赖缓存,重新安装:
rm -rf vendor composer.lock composer install
2. 移除自定义目录下的冲突依赖
你将Monolog放在app/Libraries/vendor目录下,这会和项目根目录vendor的依赖产生冲突:
- 删除
app/Libraries/vendor下的Monolog相关文件,统一使用项目根目录vendor中的依赖包。 - 确保CodeIgniter 4的自动加载机制优先加载根目录
vendor的包,避免手动引入自定义目录的冲突依赖。
3. 验证PSR-Log与Monolog版本匹配
执行composer show psr/log查看当前PSR-Log版本:
- Monolog 2.x要求
psr/log版本为^1.1 || ^2.0 - Monolog 3.x要求
psr/log版本为^3.0
如果版本不匹配,调整composer.json中的对应依赖版本后重新执行安装命令。
内容的提问来源于stack exchange,提问作者Alipia Maulana Ibrahim
相关产品推荐
相关产品推荐

