Composer Content-Length Mismatch
Asked Answered
A

11

33

Sometimes when I run composer update to upgrade the laravel project, a content-length mismatch exception might occur. Finally, I get this is because of the terrible firewall in China: the DNS was poisoned. So, if you are like me, could there be a way to fix it out?

Acquisitive answered 28/7, 2016 at 11:38 Comment(0)
A
66

First, run:

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

And then, edit the config.json, make it like this:

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

It will make the packagist connection force https. And also you could config the composer.json in your project, this is a laravel sample would be look like:

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

Update

Before Composer v1.2.3 the repository key for packagist was "packagist". In v1.2.3 it was changed to "packagist.org" (see commit e38ebef).

Acquisitive answered 28/7, 2016 at 11:38 Comment(2)
Thanks for sharing. It worked for me. You should accept your own answer! :-)Xerophilous
This answer worked for me too on the date of 2nd of July 2019Almaalmaata
P
35

Just change the composer default repo url:

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

It changes or sets the packagist repo to be used by https only.

This fixes any issues with local composer.json files too. No need to mess around with the composer.json file localy or global.

Pfennig answered 24/8, 2018 at 10:55 Comment(0)
H
3

I tried accepted answer and it was not working for me, and I tried answer from macbert and same issue, Also tried uninstall and install fresh composer. Anyway thanks to macbert and Alex Chiang I figured another solution.

I think the problem is my composer cannot download data from packagist.org server, so I changed server into a mirror. Run following command on cmd to change into mirror (I got this mirror from here)

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

If this is not working for you try some other mirror from https://packagist.org/mirrors

Anyway I listed down the same list here even if you cannot load the above link

  • Africa, South Africa

    composer config -g repos.packagist composer https://packagist.co.za
    
  • Asia, China

    composer config -g repos.packagist composer https://mirrors.huaweicloud.com/repository/php
    
  • Asia, China

    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    
  • Asia, China

    composer config -g repos.packagist composer https://php.cnpkg.org
    
  • Asia, China

    composer config -g repo.packagist composer https://packagist.phpcomposer.com
    
  • Asia, China

    composer config -g repos.packagist composer https://packagist.mirrors.sjtug.sjtu.edu.cn
    
  • Asia, China

    composer config -g repos.packagist composer https://mirrors.cloud.tencent.com/composer/
    
  • Asia, India

    composer config -g repo.packagist composer packagist.in
    
  • Asia, India

    composer config -g repos.packagist composer https://packagist.in
    
  • Asia, Indonesia

    composer config -g repos.packagist composer https://packagist.vrkansagara.in
    
  • Asia, Japan

    composer config -g repos.packagist composer https://packagist.jp
    
  • Asia, South Korea

    composer config -g repos.packagist composer https://packagist.kr
    
  • Asia, Thailand

    composer config -g repos.packagist composer https://packagist.mycools.in.th/
    
  • South America, Brazil

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

NOTE: I didn't try all the mirrors, you may try one by one if it is not working for you.

Hengist answered 22/6, 2020 at 11:26 Comment(0)
M
2

I had the same issue so I came here though google search.

I run composer commands both on my local machine and docker machine. I received a variety of errors on each machine when running composer install including Composer Content-Length Mismatch.

I started to mess with my composer.json file as recommended, then I realized the macbook lost it's wifi connection, like it loves to do. Additionally I am on a poor network as I am traveling. I also was warned my composer was out of date on my local machine, which I should have been using my docker VM to issue the commands anyway. My docker workspace container had not been updated for a year.

I got the wifi connection back, upgraded composer on my local machine and composer install ran just fine. I assume if I upgrade docker config that it will work there as well.

Mesolithic answered 3/2, 2017 at 14:43 Comment(1)
I've experienced similar issues, even on reliable broadband. Hit the wall some days, and even editing the system's composer.json (after making sure the latest was running) didn't make a difference. The next morning, running the same commands resulted in no errors, which makes me wonder if there's some type of ISP filtering and/or intermittent network issues at times.Herbertherbicide
M
2
composer config -g repos.packagist composer https://packagist.jp
Murvyn answered 22/6, 2020 at 9:40 Comment(0)
K
1

I had the same issue, i did two things

first updated composer, it was 1.4 updated to 1.7

secondly, change internet connection to high speed.

Koon answered 9/8, 2018 at 17:5 Comment(0)
K
0

I had the same problem while installing laravel on my Windows machine, I was using git bash for running following command.

composer global require "laravel/installer=~1.1"

I switched to the normal command prompt then it worked without any errors.

Keane answered 7/10, 2017 at 13:29 Comment(0)
S
0

Had some same issues based from the Github source you may also use

composer self-update --snapshot

this might produce this:

enter image description here

but after that it will automatically proceed and download

Suspense answered 1/5, 2018 at 14:0 Comment(0)
A
0

Solved the same issue by simply upgrading zlib(1g) [deb]

(more precisely, from trusty/14.04 to xenial/16.04, both are LTS of course ;-)

Avernus answered 19/3, 2019 at 9:53 Comment(0)
F
0

Laravel Error Content Length mismatch Solution Only Need to run some commands

Video thumbnail

Foison answered 13/10, 2020 at 3:11 Comment(0)
S
-1

I know that's an old one, but I faced this issue for the first today.

I'm not sure if the answer here is partially helping or not, but I keep getting the same errors anyway.

The difference (though, again, it might be just a coincidence) is that further attempts seems to be partially successful: - The already downloaded JSON are retrieved from the cache (I don't dare clearing the cache now) - Some of previously failed ones are downloaded with success - Other are still failing

I suppose that if I keep trying, I'll eventually manage to download all the JSON files.

It's clear that the problem is that Composer is unable to download the complete file (which is indeed quite big). I don't think is a network issue from my side: as far as I can see, it works just fine as it always did.

What I don't understand is what changed from yesterday that makes Composer behaves like that: I didn't update Composer, PHP or other things.

Also, even supposing that I'll eventually manage to let Composer download all these huge files, the first time I'll clear the cache, I'll likely face the same problem again.

I wonder if, at least in my case, the problem is elsewhere, because all the answer I could find are pointing here and everyone seems to solve the problem: no more errors and quick downloads of these JSON files (which is not my case).

Schindler answered 13/11, 2018 at 15:11 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.