2015-11-10 1 views
6

Я пытаюсь установить композитор через php, как описано в их wesite.Ошибка установки композитора - вывод не является tty, вход не является tty

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 Баш, чтобы выполнить эту команду. В командной строке Windows он работает нормально. Эта проблема возникает только при выполнении этой команды из git bash 2.6.2-64bit.

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

+0

Выглядит, как будто проблема в том, что вы запускаете команду из мерзавца Баша, а не из командной строки Windows, , Но без ссылки на инструкции, о которых вы говорите, трудно быть уверенным. –

+0

Да, Johnston, когда я использую из командной строки Windows, он работает нормально. Я только что протестировал, но не работал с git bash. Считаете ли вы, что это проблема git bash? Но я мог бы использовать его с git bash слишком раньше (в других компьютерах/другой версии git bash). –

ответ

6

Это может быть путь или вопрос кодирования:

it seems that git ls-remote origin , run from a freshly-built and installed MinGW Git fails to be able to output anything, and git ls-remote origin | cat (a trick learned from working with old MSys'/MinGW's quirks) only says: output is not a tty (the exit code is 127, suggesting that some executable was not found, but it is very difficult to say which one because not even debug print statements to stderr are shown; It seems that in case of a crash or of a die(), stderr is not flushed)

  • issue 519 даже предлагает unalias winpty

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

Но:

No, we cannot simply abandon winpty. PHP can be run interactively, i.e. it requires a proper Win32 Console. Running PHP without winpty in MinTTY would not provide that Console instance, leaving you with a seemingly unresponsive terminal.

See git-for-windows/[email protected] , #399 and #400 to understand what havoc you would wreak by simply removing those aliases.

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

Peh баллов из in the comments:

If you use C:`Program Files\Git\bin\bash.exe instead of C:\Program Files\Git\git-bash.exe`, then the command works fine.
I'm using it in combination with ConsoleZ without any problems

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

+6

Если вы используете 'C: \ Program Files \ Git \ bin \ bash.exe' вместо' C: \ Program Files \ Git \ git-bash.exe', то команда отлично работает. Я использую его в сочетании с [ConsoleZ] (https://github.com/cbucher/console) без проблем. –

+0

@Peh Спасибо за этот отзыв. Я включил его в ответ для большей наглядности. – VonC

+0

Спасибо, Vonc и Peh. –

2

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

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

enter image description here

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

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

    $ CD C: \ путь \ к \ ваш \ проект

    $ свернуться -sS https://getcomposer.org/installer | PHP

    $ Ls

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

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

    $ PHP composer.phar требуют некоторого-пакета, что вы хотите к установке

+0

Nice иллюстрации. +1 – VonC