【问题标题】:How to fix "https://repo.packagist.org/packages.json does not contain valid Json"?如何修复“https://repo.packagist.org/packages.json 不包含有效的 Json”?
【发布时间】:2019-04-09 16:13:15
【问题描述】:

我遇到了在 vagrantbox (Centos 7) 上运行 composer 的问题,它开始突然发生。

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

(澄清一下,我使用的是 vagrant 而不是 docker,但这是我发现的最接近我的情况的问题。我发现的大部分信息都与composer.json 无效,但这里是当前有效的 packagist.org/packages.json)

Composer not working in docker container: "https://packagist.org/packages.json" does not contain valid 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', '{', '['

当在终端上运行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

运行时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.

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

【问题讨论】:

  • 这有点混乱..您使用的是 docker 还是 vagrant ?上面的命令是“composer update”..你是从终端运行它还是在 dockerfile 中运行它? ..请添加更多详细信息
  • 已更新和编辑,希望现在更清晰。很抱歉造成混乱
  • 你的虚拟机可以访问 public 吗?你能 ping google.com 吗?
  • 是的,我可以ping通。如果我真的执行 composer install,在我在问题描述中显示的消息之后,它会继续下载和安装包,但比常规/正常行为花费更多的时间,并为每个包显示该消息。安装完成后 Composer 更新是不行的
  • 你有没有尝试过 composer config --global repo.packagist composer packagist.org

标签: composer-php vagrant symfony4


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    同样的问题,因为 php 更新到 7.2.17。 在带有 php 7.2.16 作曲家的 centos 7 上运行得很好...... 回滚到 7.2.16 是目前找到的唯一解决方案...

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

    【讨论】:

    • 感谢您的提醒!我在 php 7.3 上,正如在那个问题上提到的,它也发生在那个版本上。我用您的评论将此问题标记为已解决,因为它现在已与您提到的 github 问题及其相应的提交相关。 只需重新安装您的软件包!(注意:可能必须删除供应商文件夹和 composer.lock 才能重新安装)
    • 这个答案启发了我。我得到了repo.packagist.org:443; Connection refusedrepo.packagist.org:80; Connection refused 错误,甚至是2001:41d0:801:1000::27d: Network is unreachable 错误。然后我读了你的答案,发现我们有PHP 7.1.29。我通过PHP 7.2.185.6.40 运行composer diagnose,它成功了!这个神秘的问题终于解决了!
    【解决方案3】:

    我遇到了同样的问题。经过几天的搜索,我找到了解决方案。这似乎是一个PHP问题。尝试在 php.ini 上注释一行 curl 扩展名。我使用的是 php 5.6 版。

    extension=php_curl.dll 
    

    类型;在扩展名之前,至少应该是这样的:

    ;extension=php_curl.dll
    

    【讨论】:

      【解决方案4】:

      我在尝试安装 symfony twig bundle 时遇到了同样的问题。我跑了:

      set http_proxy=
      set https_proxy=
      composer require symfony/twig-bundle 
      

      成功了

      【讨论】:

        【解决方案5】:

        在 XAMP 中,我做了以下更改 评论下一行 ;扩展=php_curl.dll 它工作正常

        【讨论】:

        • 请不要重复现有答案,除非您想添加一些新见解
        【解决方案6】:

        当我们在控制台中运行这个命令时它会起作用

        composer config disable-tls true
        

        【讨论】:

        • 这是禁用安全功能,不能被认为是原始问题的真正解决方案
        【解决方案7】:

        我通过将输出重定向到/dev/null 绕过了这个问题。

        composer require symfony/orm-pack > /dev/null
        

        【讨论】:

        • 这实际上并不能解决问题,它只是隐藏了它。
        猜你喜欢
        • 2023-01-03
        • 2017-01-06
        • 2015-09-23
        • 2018-04-15
        • 1970-01-01
        • 2020-11-02
        • 1970-01-01
        • 2022-06-19
        • 2016-02-23
        相关资源
        最近更新 更多