【问题标题】:Composer Content-Length MismatchComposer 内容长度不匹配
【发布时间】:2016-12-02 18:43:39
【问题描述】:

有时当我运行 composer update 来升级 laravel 项目时,可能会出现内容长度不匹配异常。 最后,我明白这是因为中国可怕的防火墙:DNS 中毒了。 所以,如果你和我一样,有办法解决吗?

【问题讨论】:

    标签: composer-php packagist


    【解决方案1】:

    Laravel 报错内容长度不匹配解决办法 只需要运行一些命令

    【讨论】:

      【解决方案2】:

      我尝试了接受的答案,但它对我不起作用,我尝试了 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】:
        composer config -g repos.packagist composer https://packagist.jp
        

        【讨论】:

          【解决方案4】:

          通过简单地升级 zlib(1g) [deb] 解决了同样的问题

          (更准确地说,从 trusty/14.04 到 xenial/16.04,当然都是 LTS ;-)

          【讨论】:

            【解决方案5】:

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

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

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

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

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

            我不明白的是,与昨天相比,Composer 的行为方式发生了哪些变化:我没有更新 Composer、PHP 或其他东西。

            另外,即使我最终会设法让 Composer 下载所有这些大文件,我第一次清除缓存时,我很可能会再次面临同样的问题。

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

            【讨论】:

              【解决方案6】:

              只需更改 composer 默认 repo url:

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

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

              这也解决了本地 composer.json 文件的任何问题。 无需搞乱本地或全局的 composer.json 文件。

              【讨论】:

                【解决方案7】:

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

                第一次更新作曲家,从1.4更新到1.7

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

                【讨论】:

                  【解决方案8】:

                  从您也可以使用的 Github 源中遇到一些相同的问题

                  composer self-update --snapshot
                  

                  这可能会产生这样的结果:

                  但之后它会自动继续下载

                  【讨论】:

                    【解决方案9】:

                    首先,运行:

                    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"
                        }
                      }
                    }
                    

                    它将使packagist 连接强制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"(参见提交 e38ebef)。

                    【讨论】:

                    • 感谢分享。它对我有用。你应该接受你自己的答案! :-)
                    • 这个答案在 2019 年 7 月 2 日也对我有用
                    【解决方案10】:

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

                    composer 全局需要 "laravel/installer=~1.1"

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

                    【讨论】:

                      【解决方案11】:

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

                      我在本地机器和 docker 机器上运行 composer 命令。运行 composer install 时,我在每台机器上都收到了各种错误,包括Composer Content-Length Mismatch

                      我开始按照建议处理我的 composer.json 文件,然后我意识到 macbook 失去了它的 wifi 连接,就像它喜欢做的那样。此外,当我旅行时,我的网络很差。我还被警告说我的作曲家在我的本地机器上已经过时了,无论如何我应该一直使用我的 docker VM 来发出命令。我的 docker 工作区容器已经一年没有更新了。

                      我恢复了 wifi 连接,在我的本地机器上升级了 composer,并且 composer install 运行得很好。我假设如果我升级 docker config 它也可以在那里工作。

                      【讨论】:

                      • 我也遇到过类似的问题,即使在可靠的宽带上也是如此。有几天碰壁了,甚至编辑系统的 composer.json(在确保最新版本正在运行之后)也没有什么不同。第二天早上,运行相同的命令没有出现任何错误,这让我想知道是否存在某种类型的 ISP 过滤和/或有时会出现间歇性网络问题。
                      猜你喜欢
                      • 2019-12-15
                      • 1970-01-01
                      • 1970-01-01
                      • 2020-08-04
                      • 1970-01-01
                      • 2017-05-23
                      • 2018-04-28
                      • 2022-01-10
                      • 1970-01-01
                      相关资源
                      最近更新 更多