php composer 安装报错 Package fxp/composer-asset-plugin has a PHP requirement incompatible with your PHP

作者: siediyer 分类: linux 发布时间: 2021-12-05 01:03

事情经过

下载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不再依赖,所以不再更新维护了。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

Title - Artist
0:00