web-dev-qa-db-fra.com

erreur irrécupérable de la mise à jour du compositeur yii2

Lorsque je mets à jour mon compositeur pour ajouter l'extension yii2-solr à mon projet, je rencontre une erreur comme celle-ci:

The "yiisoft/yii2-composer" plugin requires composer-plugin-api 1.0.0, this *WILL* break in the future and it should be fixed ASAP (require ^1.0 for example).
The "fxp/composer-asset-plugin" plugin requires composer-plugin-api 1.0.0, this *WILL* break in the future and it should be fixed ASAP (require ^1.0 for example).

PHP Fatal error:  Call to undefined method Fxp\Composer\AssetPlugin\Package\Version\VersionParser::parseLinks() in /root/.composer/vendor/fxp/composer-asset-plugin/Repository/VcsPackageFilter.php on line 272

Fatal error: Call to undefined method Fxp\Composer\AssetPlugin\Package\Version\VersionParser::parseLinks() in /root/.composer/vendor/fxp/composer-asset-plugin/Repository/VcsPackageFilter.php on line 272

avant que j'ai couru composer self-update mais ne fonctionne toujours pas et quand je veux courir 

composer global require "fxp/composer-asset-plugin:1.0.1"

à nouveau l'erreur ci-dessus affichée. Voici le contenu de mon fichier composer.json:

{
"name": "yiisoft/yii2-app-basic",
"description": "Yii 2 Basic Project Template",
"keywords": ["yii2", "framework", "basic", "project template"],
"homepage": "http://www.yiiframework.com/",
"type": "project",
"license": "BSD-3-Clause",
"support": {
    "issues": "https://github.com/yiisoft/yii2/issues?state=open",
    "forum": "http://www.yiiframework.com/forum/",
    "wiki": "http://www.yiiframework.com/wiki/",
    "irc": "irc://irc.freenode.net/yii",
    "source": "https://github.com/yiisoft/yii2"
},
"minimum-stability": "stable",
"require": {
    "php": ">=5.4.0",       
    "yiisoft/yii2": ">=2.0.5",
    "yiisoft/yii2-bootstrap": "*",
    "yiisoft/yii2-swiftmailer": "*",
    "filsh/yii2-oauth2-server": "*",
    "johnitvn/yii2-rbac-plus": "*",
    "yiisoft/yii2-sphinx": "^2.0",
    "yiisoft/yii2-solr": "*"
},
"require-dev": {
    "yiisoft/yii2-codeception": "*",
    "yiisoft/yii2-debug": "*",
    "yiisoft/yii2-gii": "*",
    "yiisoft/yii2-faker": "*"
},
"config": {
    "process-timeout": 1800
},
"scripts": {
    "post-create-project-cmd": [
        "yii\\composer\\Installer::postCreateProject"
    ]
},
"extra": {
    "yii\\composer\\Installer::postCreateProject": {
        "setPermission": [
            {
                "runtime": "0777",
                "web/assets": "0777",
                "yii": "0755"
            }
        ],
        "generateCookieValidationKey": [
            "config/web.php"
        ]
    },
    "asset-installer-paths": {
        "npm-asset-library": "vendor/npm",
        "bower-asset-library": "vendor/bower"
    }
}

}

Comment puis-je réparer cette erreur? Merci.

15
mohammad shafiee

1) Supprimer l'ancienne version de Composer Asset Plugin:

composer global remove "fxp/composer-asset-plugin"

2) Installer la nouvelle version. La version recommandée pour l'installation est maintenant (au moment de l'écriture de la présente) 1.1.1 (voir documentation officielle ).

composer global require "fxp/composer-asset-plugin:~1.1.1"

Je recommanderais même d'utiliser:

composer global require "fxp/composer-asset-plugin:*"

3) Exécutez composer install dans le dossier de votre projet. En cas d'erreur, supprimez le contenu du dossier vendor et le fichier composer.lock et exécutez à nouveau composer install.

30
arogachev

Si la réponse d'Arogachev ne vous convient pas, voici une solution rapide.

  1. Supprimez manuellement le dossier du fournisseur dans votre installation de composeur global. Le dossier à supprimer par exemple. sur ubuntu: /home/user/.composer/vendor
  2. Installez la nouvelle version du plugin

composer global require "fxp/composer-asset-plugin:*"

Cela devrait être tout. Vous récupérerez tous vos fichiers et vous pourrez continuer

5
pkanane

Bower-Asset ignore le chemin:

Vous pouvez exiger yidas/yii2-composer-bower-skip avant yiisoft/yii2 dans le fichier composer.json:

"require": {
    "php": ">=5.4.0",      
    "yidas/yii2-composer-bower-skip": "~2.0.0", 
    "yiisoft/yii2": ">=2.0.5",
    "yiisoft/yii2-bootstrap": "*",
    ...

Ensuite, lancez composer update

Ce cas est pour cela vous n'avez pas besoin de la mise à jour pour Bower.

Voir https://github.com/yidas/yii2-composer-bower-skip

0
Nick Tsai