如何解决“ https://repo.packagist.org/packages.json不包含有效的Json”的问题?

Sta*_*lem 4 vagrant composer-php symfony4

我在vagrantbox(Centos 7)上运行的作曲家遇到了问题,这种情况开始突然发生。

我已经尝试过手动运行下面链接中提到的命令/解决方案,但无济于事。

(为澄清起见,我使用的不是流浪者docker,但这是我发现的最接近我的情况。我发现的大多数信息都与composer.json无效有关,但这里是packagist.org/packages.json目前有效)

Composer无法在Docker容器中工作:“ https://packagist.org/packages.json”不包含有效的JSON

以下是问题的详细信息。

composer update在终端上运行时,我得到:

 composer update


  [Seld\JsonLint\ParsingException]
  "https://repo.packagist.org/packages.json" does not contain valid JSON
  Parse error on line 1:

  ^
  Expected one of: 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

Run Code Online (Sandbox Code Playgroud)

并且composer install在终端上也运行时,每个包都会返回以下内容:

Failed to download psr/cache from dist: "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8" 
appears broken, and returned an empty 200 response
    Now trying to download from source
Run Code Online (Sandbox Code Playgroud)

composer config --global repo.packagist composer packagist.org 现在运行时结果是

composer update
Loading composer repositories with package information


  [Composer\Downloader\TransportException]
  Your configuration does not allow connections to http://repo.packagist.org/packages.json. See https://getcomposer.o
  rg/doc/06-config.md#secure-http for details.
Run Code Online (Sandbox Code Playgroud)

任何想法为什么这开始发生,我该如何解决?

小智 8

如果您的提供商/系统配置为 IPv6,但没有有效的 IPv6 路由到互联网,也可能与 IPv6 相关。

这发生在我身上,做 sysctl -w net.ipv6.conf.all.disable_ipv6=1(以 root 身份),然后再次尝试 composer 解决了这个问题。

要永久应用它,请将规则添加到 /etc/sysctl.conf (或您喜欢的操作系统的任何位置)


Bas*_*dry 6

同样的问题在这里,因为php更新到7.2.17。在使用php 7.2.16 composer的centos 7上运行得很好...回滚到7.2.16是目前找到的唯一解决方案...

编辑:似乎是一个symfony flex问题:https : //github.com/symfony/flex/issues/484

  • 这个答案启发了我。我得到了`repo.packagist.org:443; 连接被拒绝`和`repo.packagist.org:80; 连接被拒绝` 错误,甚至`2001:41d0:801:1000::27d: Network is unreachable` 错误。然后我读了你的回答,发现我们有`PHP 7.1.29`。我通过“PHP 7.2.18”和“5.6.40”运行了“作曲家诊断”,它奏效了!这个神秘的问题终于解决了! (2认同)