Composer安装错误 - 输出不是tty,输入不是tty

Tah*_*oon 8 php windows git-bash composer-php

我正在尝试通过php安装composer,如他们的wesite所述.

php -r "readfile('https://getcomposer.org/installer');" | php
Run Code Online (Sandbox Code Playgroud)

但它显示以下错误:

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

我在Windows 7中并使用git bash来执行此命令.在Windows命令提示符下,它工作正常.只有从git bash 2.6.2-64bit运行此命令时才会出现此问题.

顺便说一下,我已经为windows安装了composer,这很好用.但我无法以这种方式下载composer.phar.我该如何解决这个问题?

Von*_*onC 8

它可以是PATH或编码问题:

看起来git ls-remote origin,从新建和安装的MinGW Git运行无法输出任何东西,并且git ls-remote origin | cat(从使用旧的MSys/MinGW的怪癖中学到的技巧)只说:( output is not a tty退出代码为127,表明有些找不到可执行文件,但很难说哪一个,因为甚至没有显示调试打印语句到stderr;似乎在崩溃或die()的情况下,stderr没有被刷新)

但:

不,我们不能简单地放弃winpty.PHP可以交互式运行,即它需要一个合适的Win32控制台.在MinTTY中运行没有winpty的PHP将不会提供该控制台实例,从而使您看起来没有响应的终端.

请参阅git-for-windows/build-extra @ 44ed99b,#399#400,了解您只需删除这些别名就会造成什么样的破坏.

所以现在,bash控制台与php通过管道执行不兼容(因为第二个| php可能不会受益winpty,当程序需要Win32控制台进行交互式使用时,这似乎是必需的).

白韫六指出的评论:

如果你使用C:`Program Files\Git\bin\bash.exe instead ofC:\ Program Files\Git\git-bash.exe`,那么命令工作正常.
我正在将它与ConsoleZ结合使用而没有任何问题

这可能是因为bash.exe不使用winpty,相反git-bash.exe.

  • 如果你使用`C:\ Program Files\Git\bin\bash.exe`而不是`C:\ Program Files\Git\git-bash.exe`那么命令工作正常.我正在将它与[ConsoleZ](https://github.com/cbucher/console)结合使用,没有任何问题. (7认同)