Когда я пытаюсь установить зависимость из своего личного репозитория, я получаю следующую ошибку:
> 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:[email protected]/scm/lib/my-super-lib.git"
композитор работает нормально. Но я не хочу хранить учетные данные в виде открытого текста.
Есть ли способ заставить композитора каждый раз запрашивать имя пользователя и пароль?
Репозиторий — это Atlassian Stash с https nginx перед ним (были протестированы как https, так и http)
Composer version 70a20ebcc19f1ea8ab0954a4fbdce208b30085e7 2014-03-12 16:07:58
ИЗМЕНИТЬ:
На данный момент я выполняю git clone --mirror
самостоятельно, чтобы заполнить кеш композитора, а затем я просто запускаю установку композитора или обновление композитора, как обычно (но он говорит, что иногда не может обновить информацию о пакете)
код:
$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);
}
manual git clone --mirror
работает нормально и запрашивает мои учетные данные. А вот composer (который, очевидно, выполняет ту же команду) — нет.
ИЗМЕНИТЬ2
Кажется, это проблема PHP Storm 8 EAP, которую я использую. Последняя стабильная версия требует правильной аутентификации во время composer install
, но не во время composer update
.