web-dev-qa-db-fra.com

Incompatibilité longueur-contenu du compositeur

Parfois, lorsque je lance la mise à jour de compositeur pour mettre à niveau le projet Laravel, il peut se produire une exception d’incompatibilité de contenu-longueur… .. Enfin, j’obtiens cela parce que le terrible pare-feu en Chine: le DNS a été empoisonné… vous êtes celui comme moi, pourrait être comme suit pour résoudre ce problème.

16
Alex Chiang

Première exécution:

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

Et ensuite, éditez le fichier config.json, faites-le comme ceci:

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

Cela rendra la connexion packagiste force https . Et vous pouvez aussi configurer le composer.json dans votre projet, voici un exemple de laravel ressemblant à ceci:

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

Mettre à jour

Avant Composer v1.2.3, la clé de référentiel pour packagist était "packagist". Dans v1.2.3, il a été remplacé par "packagist.org" (voir commit e38ebef ).

45
Alex Chiang

Il suffit de changer l'URL du repo par défaut du compositeur:

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

Il modifie ou définit le référentiel packagist pour qu'il ne soit utilisé que par https. 

Cela corrige également tous les problèmes avec les fichiers composer.json locaux. Pas besoin de perdre son temps avec le fichier composer.json, que ce soit locally ou global.

9
macbert

J'ai eu le même problème, alors je suis venu ici via Google. 

J'exécute des commandes de composition à la fois sur ma machine locale et sur ma machine de docker. J'ai reçu diverses erreurs sur chaque ordinateur lors de l'exécution de l'installation de composer, y compris Composer Content-Length Mismatch

J'ai commencé à jouer avec mon fichier composer.json comme recommandé, puis j'ai réalisé que le macbook avait perdu sa connexion wifi, comme il aime le faire. De plus, je suis sur un réseau médiocre car je voyage. On m'a également prévenu que mon compositeur était obsolète sur ma machine locale et que j'aurais dû utiliser mon docker VM pour exécuter les commandes de toute façon. Mon conteneur d'espace de travail Docker n'avait pas été mis à jour depuis un an.

La connexion Wi-Fi a été rétablie, le composeur mis à niveau sur ma machine locale et son installation s'est très bien déroulée. Je suppose que si j'améliore la configuration de docker, cela fonctionnera également.

1
Iannazzi

J'ai eu le même problème lors de l'installation de laravel sur ma machine Windows, j'utilisais git bash pour exécuter la commande suivante. 

composer global nécessite "laravel/installer = ~ 1.1"

Je suis passé à la commande normale Invite, puis cela a fonctionné sans erreur.

0

J'ai eu le même problème, j'ai fait deux choses 

premier compositeur mis à jour, il était 1.4 mis à jour à 1.7

deuxièmement, changer la connexion Internet à haute vitesse.

0
sradha

Je sais que c'est un vieil homme, mais j'ai fait face à ce problème pour la première fois aujourd'hui.

Je ne suis pas sûr si la réponse ici aide partiellement ou pas, mais je continue à recevoir les mêmes erreurs de toute façon.

La différence (bien que, encore une fois, ce soit peut-être une simple coïncidence), c’est que de nouvelles tentatives semblent partiellement réussies: - Les fichiers JSON déjà téléchargés sont extraits du cache (je n’ose pas vider le cache pour le moment) - Certains de ceux qui ont déjà échoué sont téléchargés avec succès - D'autres échouent toujours

Je suppose que si je continue d'essayer, je finirai par télécharger tous les fichiers JSON.

Il est clair que le problème est que Composer ne parvient pas à télécharger le fichier complet (ce qui est en fait assez volumineux) . Je ne pense pas que ce soit un problème de réseau de mon côté: à ma connaissance, cela fonctionne très bien. comme toujours.

Ce que je ne comprends pas, c’est ce qui a changé par rapport à hier et qui fait que Composer se comporte comme ça: je n’ai pas mis à jour Composer, PHP ou d’autres choses.

En outre, même en supposant que je parvienne à laisser finalement Composer télécharger tous ces fichiers volumineux, la première fois que je viderai le cache, je ferai probablement de nouveau face au même problème.

Je me demande si, du moins dans mon cas, le problème est ailleurs, car toutes les réponses que je pourrais trouver pointent ici et que tout le monde semble résoudre le problème: plus d'erreurs et de téléchargements rapides de ces fichiers JSON (ce qui n'est pas mon cas) .

0
Andrea Sciamanna

Si vous aviez rencontré le même problème à partir de la source Github, vous pouvez également utiliser

composer self-update --snapshot

cela pourrait produire ceci:

 enter image description here

mais après cela il se poursuivra automatiquement et téléchargera

0
Sofia Mallari