php composer 安装报错 Package fxp/composer-asset-plugin has a PHP requirement incompatible with your PHP
事情经过
下载php的composer最新版,安装yii2框架,报错
报错内容
[InvalidArgumentException] Package fxp/composer-asset-plugin has a PHP requirement incompatible with your PHP version, PHP extensions and Composer version: - fxp/composer-asset-plugin requires composer-plugin-api ^1.0 which does not match your installed version 2.1.0. Exception trace: () at phar:///usr/local/bin/composer/src/Composer/Command/InitCommand.php:845 Composer\Command\InitCommand->findBestVersionAndNameForPackage() at phar:///usr/local/bin/composer/src/Composer/Command/InitCommand.php:498 Composer\Command\InitCommand->determineRequirements() at phar:///usr/local/bin/composer/src/Composer/Command/RequireCommand.php:189 Composer\Command\RequireCommand->execute() at phar:///usr/local/bin/composer/vendor/symfony/console/Command/Command.php:245 Symfony\Component\Console\Command\Command->run() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:835 Symfony\Component\Console\Application->doRunCommand() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:185 Symfony\Component\Console\Application->doRun() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:312 Composer\Console\Application->doRun() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:117 Symfony\Component\Console\Application->run() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:125 Composer\Console\Application->run() at phar:///usr/local/bin/composer/src/Composer/Command/GlobalCommand.php:111 Composer\Command\GlobalCommand->run() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:835 Symfony\Component\Console\Application->doRunCommand() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:185 Symfony\Component\Console\Application->doRun() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:312 Composer\Console\Application->doRun() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:117 Symfony\Component\Console\Application->run() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:125 Composer\Console\Application->run() at phar:///usr/local/bin/composer/bin/composer:64 require() at /usr/local/bin/composer:24
原因
下载的composer版本太高,2.1.x版本,但这个插件不支持2.x的,必须用1.x的。
重新去composer官网下载 1.x的composer ,重新执行
wget https://getcomposer.org/download/1.10.22/composer.phar php composer.phar global require "fxp/composer-asset-plugin:~1.4" -vvv composer.phar install -vvv
下载报错
[Composer\Downloader\TransportException] Content-Length mismatch, received 136823 bytes out of the expected 1751254
继续解决:
# 调大缓存 php composer.phar config --global cache-files-maxsize 1024 # 使用华为镜像 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
问题解决
其实问题根源在于这个插件 fxp/composer-asset-plugin
不支持2.x版本的composer导致,目前对方还没进行任何更新。
Package phpunit/php-token-stream is abandoned, you should avoid using it. No replacement was suggested. Package codeception/base is abandoned, you should avoid using it. No replacement was suggested. Package facebook/webdriver is abandoned, you should avoid using it. Use php-webdriver/webdriver instead. Reading /projects/gogoman/vendor/composer/installed.json Writing lock file Generating autoload files 33 packages you are using are looking for funding. Use the `composer fund` command to find out more!
更新于2021/07/14
最正确的解决办法是就是重新安装,删除composer.json,重新安装。
composer2.x不需要引入 fxp依赖,直接解决这些问题,fxp作者估计是看到composer2.x不再依赖,所以不再更新维护了。