作曲家内容长度不匹配

Ale*_*ang 19 composer-php packagist

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

Ale*_*ang 52

第一次运行:

composer config --list --global          //this will get the composer home path.
[home] /root/.composer                   //it's my composer home path.
Run Code Online (Sandbox Code Playgroud)

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

{
  "config": {
    "github-protocols": [
      "https"
    ]
  },
  "repositories": {
    "packagist.org": {
      "type": "composer",
      "url": "https://packagist.org"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

它将使包装连接力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"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

更新

在Composer v1.2.3之前,packagist的存储库密钥是"packagist".在v1.2.3中它被改为"packagist.org"(参见commit e38ebef).


mac*_*ert 16

只需更改作曲家默认的repo url:

composer config -g repo.packagist composer https://packagist.org
composer config -g github-protocols https ssh
Run Code Online (Sandbox Code Playgroud)

它会更改或设置仅由https使用的packagist repo.

这也解决了本地composer.json文件的任何问题.无需使用composer.json文件localy或global.