Composer install \ update身份验证失败

时间:2014-03-18 07:16:31

标签: php git composer-php bitbucket-server

当我尝试从我的私人存储库安装依赖项时,我收到以下错误:

> php.exe composer.phar update
Loading composer repositories with package information

  [RuntimeException]                                                           
  Failed to clone https://my.stash.repo/scm/lib/my-super-lib.git, could no  
  t read packages from it                                                      

  fatal: Authentication failed for 'https://my.stash.repo/scm/lib/my-super-lib.git/'                                                                   

update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock] [--no-plugins] [--no-custom-installers] [--no-scripts] [--no-progress] [--with-dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [packages1] ... [packagesN]

Process finished with exit code 1 at 10:57:04.
Execution time: 1 996 ms.

相关的composer.json部分如下所示:

   "require": {
        "php": ">=5.3.0",
        "scaytrase/my-super-lib": "1.1"
    },
    "repositories": [
        {
            "type": "vcs",
            "url":  "https://my.stash.repo/scm/lib/my-super-lib.git"
        }
    ],

如果我直接设置用户名和密码,如

"url":  "https://username:password@my.stash.repo/scm/lib/my-super-lib.git"

作曲家操作工作得很好。但我不想要商店明文凭证。

有没有办法让作曲家每次都要问用户名和密码?

存储库是Atlassian Stash,前面有https nginx(https和http都经过测试)

Composer version 70a20ebcc19f1ea8ab0954a4fbdce208b30085e7 2014-03-12 16:07:58

修改

现在我自己执行git clone --mirror来填充作曲家的缓存然后我像往常一样运行作曲家安装或作曲家更新(但它说有时无法更新包信息)

code

            $command = sprintf('git clone --mirror %s %s', escapeshellarg($this->url), escapeshellarg($this->repoDir));
            if (0 !== $this->process->execute($command, $output)) {
                $output = $this->process->getErrorOutput();

                if (0 !== $this->process->execute('git --version', $ignoredOutput)) {
                    throw new \RuntimeException('Failed to clone '.$this->url.', git was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput());
                }

                throw new \RuntimeException('Failed to clone '.$this->url.', could not read packages from it' . "\n\n" .$output);
            }

手动git clone --mirror工作得很好并要求我的凭据。但作曲家(显然执行相同的命令) - 它没有。

EDIT2

这似乎是我使用的PHP Storm 8 EAP问题。最新的稳定版本需要在composer install期间正确进行身份验证,但不能在composer update期间进行身份验证。

2 个答案:

答案 0 :(得分:1)

似乎是最新的PhpStorm 8 EAP 134.1456中的一个错误。 PhpStorm 7.1.3与作曲家一样使用命令行(相同的行为)并执行composer install罚款(但不是composer update,但命令行也失败了。)

我已经提交了bugreport

修改

我对作曲家的错误报告已被this

取代

<强> UPD2

现在问题完全不实际。 Composer正确处理身份验证,并要求在COMPOSER_HOME/auth.json

中存储凭据

答案 1 :(得分:0)

您可以使用这些http凭据设置加密文件,以便git从该加密文件中使用它们 这假设正在运行的gpg代理能够提供访问该凭据gpg加密文件所需的唯一密码。

您将使用的网址是:

https://username@my.stash.repo/scm/lib/my-super-lib.git

允许git向其credential helper询问正确的密码(&{39; username&#39;)。

参见&#34; Is there a way to skip password typing when using https://github&#34;举一个具体的例子。