Ошибка установки Composer — вывод не tty, ввод не tty

Я пытаюсь установить композитор через php, как описано на их сайте.

php -r "readfile('https://getcomposer.org/installer');" | php

Но он отображает следующую ошибку:

$ php -r "readfile('https://getcomposer.org/installer');" | php
output is not a tty
input is not a tty

Я нахожусь в Windows 7 и использую git bash для выполнения этой команды. В командной строке Windows, он работает нормально. Эта проблема возникает только когда я запускаю эту команду из git bash 2.6.2-64bit.

Кстати, я установил композитор для Windows, и это работает нормально. Но я не могу скачать composer.phar таким образом. Как я могу исправить эту проблему?

8

Решение

Это может быть PATH или проблема с кодировкой:

Кажется, что git ls-remote originзапустить из только что построенного и установленного MinGW Git не в состоянии выводить что-либо, и git ls-remote origin | cat (уловка, извлеченная из работы со старыми хитростями MSys / MinGW), говорит только: output is not a tty (код выхода — 127, предполагая, что некоторый исполняемый файл не был найден, но очень трудно сказать, какой именно, потому что даже не отображаются отладочные операторы печати для stderr; кажется, что в случае сбоя или die (), стдерр не покраснел)

  • выпуск 519 даже предлагает unalias winpty

    unalias $(alias | grep winpty | cut -d"=" -f1 | cut -d" " -f2)
    

Но:

Нет, мы не можем просто отказаться от winpty. PHP может работать в интерактивном режиме, то есть для него требуется соответствующая консоль Win32. Запуск PHP без winpty в MinTTY не обеспечил бы этот экземпляр консоли, оставив вам, казалось бы, не отвечающий терминал.

Увидеть ГИТ-для-окон / встроенный дополнительный @ 44ed99b, # 399 а также # 400 чтобы понять, какой хаос вы бы совершили, просто удалив эти псевдонимы.

Так что сейчас консоль bash не совместима с выполнением php сквозная труба (как вторая | php может не выиграть от winpty, который необходим, когда программе требуется консоль Win32 для интерактивного использования).

Пе указывает на то в комментариях:

Если вы используете C: `Program Files \ Git \ bin \ bash.exeinstead ofC: \ Program Files \ Git \ git-bash.exe`, тогда команда работает нормально.
Я использую это в сочетании с ConsoleZ без проблем

Это, вероятно, потому что bash.exe не использует winpty, вопреки git-bash.exe,

8

Другие решения

Ответ VonC является правильным, и чтобы помочь другим в будущем, я хочу предложить более наглядное решение.

  • Перейдите к C: \ Program Files \ Git \ bin
  • Дважды щелкните на bash.exe

введите описание изображения здесь

  • Теперь вы должны увидеть командную строку.

  • Перейдите в каталог вашего проекта PHP и установите Composer.

    $ cd C: \ path \ to \ your \ project

    $ curl -sS https://getcomposer.org/installer | PHP

    $ ls

  • Файл composer.phar теперь виден в корне проекта.

  • Установите пакет с композитором.

    $ php composer.phar требует некоторого пакета, который вы хотите установить

2

По вопросам рекламы [email protected]