作曲家内容长度不匹配

时间:2016-07-28 11:38:23

标签: composer-php packagist

有时,当我运行composer update来升级laravel项目时,可能会出现内容长度不匹配异常。 最后,我得到的是因为中国可怕的防火墙:DNS中毒了。 所以,如果你是像我这样的人,可以按照以下方式解决它。

11 个答案:

答案 0 :(得分:45)

首先,运行:

composer config --list --global          //this will get the composer home path.
[home] /root/.composer                   //it's my composer home path.

然后,编辑config.json,使其像这样:

{
  "config": {
    "github-protocols": [
      "https"
    ]
  },
  "repositories": {
    "packagist.org": {
      "type": "composer",
      "url": "https://packagist.org"
    }
  }
}

它将使包装连接力https。 而且你可以在你的项目中配置composer.json,这是一个laravel示例看起来像:

{
  "name": "laravel/laravel",
  "description": "The Laravel Framework.",
  "keywords": [
    "framework",
    "laravel"
  ],
  "license": "MIT",
  "type": "project",
  "require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.2.*"
  },
  "config": {
    "preferred-install": "dist"
  },
  "repositories": {
    "packagist.org": {
      "type": "composer",
      "url": "https://packagist.org"
    }
  }
}

更新

在Composer v1.2.3 之前,packagist的存储库密钥为"packagist"。在 v1.2.3 中,它已更改为"packagist.org"(请参阅commit e38ebef)。

答案 1 :(得分:11)

只需更改作曲家的默认存储库网址:

composer config -g repo.packagist composer https://packagist.org
composer config -g github-protocols https ssh

它更改或设置仅由https使用的packagist存储库。

这也解决了本地composer.json文件的所有问题。 无需弄乱本地或全局的composer.json文件。

答案 2 :(得分:3)

我尝试了接受的答案,但它对我不起作用,我尝试了来自macbert的答案以及相同的问题,还尝试了卸载并安装新的作曲家。无论如何,多亏了Macbert和Alex Chiang,我才找到了另一个解决方案。

我认为问题是我的作曲家无法从packagist.org服务器下载数据,因此我将服务器更改为镜像服务器。在cmd上运行以下命令以更改为镜像(我从here获得了该镜像)

composer config -g repo.packagist composer https://repo-eu-uk-1.packagist.org

如果这不适用于您,请尝试使用https://packagist.org/mirrors上的其他镜像

无论如何,即使您无法加载上面的链接,我也会在此处列出相同的列表

  • 南非,非洲

    composer config -g repos.packagist composer https://packagist.co.za
    
  • 中国亚洲

    composer config -g repos.packagist composer https://mirrors.huaweicloud.com/repository/php
    
  • 中国亚洲

    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    
  • 中国亚洲

    composer config -g repos.packagist composer https://php.cnpkg.org
    
  • 中国亚洲

    composer config -g repo.packagist composer https://packagist.phpcomposer.com
    
  • 中国亚洲

    composer config -g repos.packagist composer https://packagist.mirrors.sjtug.sjtu.edu.cn
    
  • 中国亚洲

    composer config -g repos.packagist composer https://mirrors.cloud.tencent.com/composer/
    
  • 亚洲,印度

    composer config -g repo.packagist composer packagist.in
    
  • 亚洲,印度

    composer config -g repos.packagist composer https://packagist.in
    
  • 印度尼西亚亚洲

    composer config -g repos.packagist composer https://packagist.vrkansagara.in
    
  • 日本亚洲

    composer config -g repos.packagist composer https://packagist.jp
    
  • 亚洲,韩国

    composer config -g repos.packagist composer https://packagist.kr
    
  • 亚洲,泰国

    composer config -g repos.packagist composer https://packagist.mycools.in.th/
    
  • 南美,巴西

    composer config -g repos.packagist composer https://packagist.com.br
    

注意:我没有尝试所有的镜子,如果对您不起作用,您可以一一尝试。

答案 3 :(得分:2)

composer config -g repos.packagist composer https://packagist.jp

答案 4 :(得分:1)

我有同样的问题,所以我来到这里虽然谷歌搜索。

我在本地计算机和docker计算机上运行composer命令。运行包含Composer Content-Length Mismatch的作曲家安装时,我在每台计算机上收到了各种错误。

我按照建议开始弄乱我的composer.json文件,然后我意识到macbook丢失了它的wifi连接,就​​像它喜欢做的那样。另外,当我旅行时,我在一个糟糕的网络上。我也被警告我的作曲家在我的本地机器上已经过时了,我应该使用我的docker VM来发出命令。我的docker工作区容器一年没有更新。

我恢复了wifi连接,在本地计算机上升级了composer,并且composer install运行得很好。我假设如果我升级docker配置它也会在那里工作。

答案 5 :(得分:0)

我在Windows机器上安装laravel时遇到了同样的问题,我使用git bash运行以下命令。

  

composer global require" laravel / installer = ~1.1"

我切换到正常的命令提示符,然后它没有任何错误。

答案 6 :(得分:0)

如果基于Github源存在同样的问题,您也可以使用

composer self-update --snapshot

这可能会产生这个:

enter image description here

但之后会自动继续下载

答案 7 :(得分:0)

我遇到了同样的问题,我做了两件事

第一个更新的作曲家,它已从1.4更新为1.7

其次,将互联网连接更改为高速。

答案 8 :(得分:0)

我知道那是一个老问题,但是今天我第一次遇到了这个问题。

我不确定这里的答案是否有部分帮助,但是无论如何我都会遇到相同的错误。

区别(尽管再次可能只是巧合)是进一步的尝试似乎部分成功: -从缓存中检索已经下载的JSON(我现在不敢清除缓存) -成功下载了一些以前失败的 -其他仍然失败

我想如果我继续尝试,最终将设法下载所有JSON文件。

很明显,问题在于Composer无法下载完整的文件(确实很大)。 我不认为这是网络方面的问题:据我所知,它像往常一样工作正常。

我不明白的是,与昨天相比,使Composer表现出以下变化:我没有更新Composer,PHP或其他内容。

而且,即使假设我最终将设法让Composer下载所有这些大文件,第一次清除缓存时,我可能还会再次遇到相同的问题。

我想知道,至少就我而言,问题是否在其他地方,因为我能找到的所有答案都指向这里,并且每个人似乎都可以解决问题:这些JSON文件没有更多的错误和快速下载(不是我的情况)。

答案 9 :(得分:0)

只需升级zlib(1g)[deb]即可解决相同的问题

(更确切地说,从trusty / 14.04到xenial / 16.04,两者都是LTS;-)

答案 10 :(得分:0)

Laravel错误内容长度不匹配解决方案 只需要运行一些命令

Video thumbnail