通过 Composer 安装或更新 symfony/flex 失败

Chr*_*own 6 php symfony composer-php

我有一个使用 symfony/flex 的项目,其中我无法运行composer installcomposer update. 我也无法使用 symfony/flex 作为依赖项创建新的作曲家项目,因为失败是相同的。例如;

mkdir foo && cd foo && composer require symfony/flex -vvv
Run Code Online (Sandbox Code Playgroud)

始终有以下输出;

...
Package operations: 1 install, 0 updates, 0 removals
Installs: symfony/flex:v1.2.6
  - Installing symfony/flex (v1.2.6): Reading /Users/me/.composer/cache/files/symfony/flex/17b622276922e6347ea129acd6238ae1c41d96b6.zip from cache
Loading from cache
 Extracting archiveExecuting command (CWD): unzip -qq  '/Users/me/projects/foo/vendor/symfony/flex/2064a553f7cdf064ba8c1b62c7087ec6' -d '/Users/me/projects/foo/vendor/composer/65215880'
Loading plugin Symfony\Flex\Flex
Downloading https://flex.symfony.com/versions.json
Run Code Online (Sandbox Code Playgroud)

下载在下载 versions.json 时挂起几秒钟,然后默默失败。vendor/symfony/flex存在。

这次失败的原因可能是什么?我的同事可以成功运行相同的命令,因此我假设本地作曲家存在问题。我尝试重新安装 Composer 并清除缓存,但没有成功。

编辑:现在在现有项目中运行时composer update -vvv我得到以下输出

...
Downloading https://repo.packagist.org/packages.json
Run Code Online (Sandbox Code Playgroud)

它也挂在哪里,所以看起来 Composer 无法下载某些 JSON 文件?软件包下载得很好,所以看起来不像没有互联网。

编辑2:我还可以确认使用composer update --no-plugins在现有项目中是否有效。

wee*_*gee 18

当作曲家没有按预期工作时,您应该像这样重置它并更新它。第一的

$ composer clearcache
Run Code Online (Sandbox Code Playgroud)

然后更新

$ composer self-update
Run Code Online (Sandbox Code Playgroud)

然后运行诊断

$ composer diagnose
Run Code Online (Sandbox Code Playgroud)

然后cd到composer.json所在的位置并执行

$ composer dump-autoload
Run Code Online (Sandbox Code Playgroud)

然后

$ composer install
Run Code Online (Sandbox Code Playgroud)

应该解决这个问题。另一种方法包括

$ composer update symfony/flex --no-plugins --no-scripts
Run Code Online (Sandbox Code Playgroud)

symfony/flex此外,这可能是由于和之间的冲突而引起的symfony/symfony。要消除该冲突,请按照以下步骤操作

$ composer remove symfony/symfony
Run Code Online (Sandbox Code Playgroud)

然后像这样编辑你的composer.json文件

{
    "require": {
        "symfony/flex": "^1.0",
     },
     "conflict": {
         "symfony/symfony": "*"
    }
}
Run Code Online (Sandbox Code Playgroud)


Jea*_*ean 7

旧的 Flex 基础设施正在关闭,您需要将 Flex 更新到至少 1.17.1:symfony.com/blog/upgrade-flex-on-your-symfony-projects

为此,您需要运行:

composer update symfony/flex --no-plugins --no-scripts
Run Code Online (Sandbox Code Playgroud)