首页 > 解决方案 > 无法通过 Composer 升级 Yii2 版本

问题描述

我正在尝试更新我的 yii2-basic 应用程序版本,因为我认为它与我的新 XAMPP (PHP 7.4.1) 不兼容。

我是这样做的:

composer self-update
composer global require "fxp/composer-asset-plugin:^1.4.1" --no-plugins
composer require "yiisoft/yii2:~2.0.14" --update-with-dependencies

这是它在命令窗口中的显示方式:

./composer.json has been updated
The "extra.asset-installer-paths" option is deprecated, use the "config.fxp-asset.installer-paths" option
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
- Conclusion: remove phpunit/phpunit 5.7.x-dev
- Conclusion: remove sebastian/recursion-context 3.0.x-dev
- Installation request for phpunit/phpunit (locked at 5.7.x-dev) -> satisfiable by phpunit/phpunit[5.7.x-dev].
- Conclusion: don't install sebastian/recursion-context 3.0.x-dev
- phpunit/phpunit 5.7.x-dev requires sebastian/object-enumerator ~2.0 -> satisfiable by sebastian/object-enumerator[2.0.0, 2.0.1, 2.0.x-dev].
- sebastian/object-enumerator 2.0.0 requires sebastian/recursion-context ~2.0 -> satisfiable by sebastian/recursion-context[2.0.0, 2.0.x-dev].
- sebastian/object-enumerator 2.0.1 requires sebastian/recursion-context ~2.0 -> satisfiable by sebastian/recursion-context[2.0.0, 2.0.x-dev].
- sebastian/object-enumerator 2.0.x-dev requires sebastian/recursion-context ^2.0 -> satisfiable by sebastian/recursion-context[2.0.0, 2.0.x-dev].
- Can only install one of: sebastian/recursion-context[2.0.0, 3.0.x-dev].
- Can only install one of: sebastian/recursion-context[2.0.x-dev, 3.0.x-dev].
- Installation request for sebastian/recursion-context (locked at 3.0.x-dev) -> satisfiable by sebastian/recursion-context[3.0.x-dev].


Installation failed, reverting ./composer.json to its original content.

我也尝试了这些行,但没有一个行得通:

composer require "yiisoft/yii2:2.0.14" --update-with-dependencies
composer require "yiisoft/yii2:~2.0.14"

标签: yii2composer-php

解决方案


只需像这样更新您的 composer.json :

....
    "require": {
        "php": ">=5.6.0",
        "yiisoft/yii2": "~2.0.14",
....

    "require-dev": {
        "codeception/codeception": "*",

我们将 Yii2 的最低版本在 2.0.14 和 yii2-codeception 直接更改为 codeception。

并且不要忘记将 bower 和 npm 资产配置更新为更新的 composer 配置。较新的配置如下所示。


    "config": {
        "vendor-dir": "vendor",
        "process-timeout": 1800,
        "fxp-asset":{
            "installer-paths": {
                "npm-asset-library": "_protected/vendor/npm",
                "bower-asset-library": "_protected/vendor/bower"
            }
        }
    },

并删除“extra”参数中的“asset-installer-paths”。


推荐阅读