我正在尝试使用 Composer 将 yii2 更新到较新的版本,我刚刚将我的 Composer 更新到最新版本,运行后
composer require "yiisoft/yii2:~2.0.49" --update-with-dependencies
我收到以下错误
Problem 1
- codeception/module-yii2 is locked to version 1.1.5 and an update of this package was not requested.
- codeception/module-yii2 1.1.5 requires php >=5.6.0 <=8.1 | ~8.1.0 -> your php version (8.2.3) does not satisfy that requirement.
Problem 2
- symfony/browser-kit is locked to version v4.2.4 and an update of this package was not requested.
- symfony/browser-kit v4.2.4 requires php ^7.1.3 -> your php version (8.2.3) does not satisfy that requirement.
Problem 3
- lcobucci/jwt 3.3.3 requires php ^5.6 || ^7.0 -> your php version (8.2.3) does not satisfy that requirement.
- sizeg/yii2-jwt v2.0.2 requires lcobucci/jwt ~3.3.0 -> satisfiable by lcobucci/jwt[3.3.3].
- sizeg/yii2-jwt is locked to version v2.0.2 and an update of this package was not requested.
我现在已经挣扎了几个小时,我也尝试运行
composer update
,但我也遇到了错误。我如何更新 codeception/module-yii2?并且还升级我的 yii2 版本?预先感谢任何帮助
问题出在包裹
sizeg/yii2-jwt
。
最新版本需要
lcobucci/jwt: ~3.3.0
。但即使在 3.4.x 版本中,该软件包也不支持 php 8。
您有 3 个选择:
1。在 php 7.4 上运行您的应用程序
Yii 2.0.49 确实支持 php 7.4,所以 Composer 更新在该 php 版本上应该没问题。
2。您可以在 php 8.2 上运行应用程序时强制 Composer 安装 php 7.4 的软件包
你必须希望一切顺利。 您可以通过在composer.json中设置目标平台来做到这一点,如下所示:
{
"config": {
"platform": {
"php": "7.4.33"
}
}
}
如果您这样做,作曲家将忽略当前的 php 版本,而是安装软件包,就像在指定的 php 版本上运行一样。 这可能是个坏主意,特别是如果您的生产环境也运行 php 8.2。如果您的生产环境运行 php 7.4 可能没问题,但您不想在开发环境中安装旧的 php。
3.您可以放弃
sizeg/yii2-jwt
并直接使用较新版本的lcobucci/jwt
在这种情况下,您只需将作曲家输出中提到的其他两个包(codeception/module-yii2
和symfony/browser-kit
)更新到支持 php 8.2 的版本。用最新的 composer update
要求替换过时的 sizeg/yii2-jwt
要求后运行 lcobucci/jwt
应该负责更新它们。
注意
如果您想检查将要发生的情况,您可以随时将
--dry-run
选项与 composer
命令一起使用。使用该选项将使 Composer 输出将要完成的更改,而无需实际对已安装的软件包进行任何更改。