composer php安装错误 – 输出不是一个tty,input不是一个tty

我试图通过php安装composer php,如他们的wesite中所述。

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运行这个命令时。

顺便说一句,我已经安装了composer php的Windows,并且工作正常。 但是我不能以这种方式下载composer.phar。 我该如何解决这个问题?

它可能是一个PATH或编码问题:

  • 问题25提到:

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

  • 问题519甚至建议unalias winpty

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

但:

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

请参阅git-for-windows / build-extra @ 44ed99b , #399和#400,以了解通过简单地删除这些别名会造成的破坏。

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

Peh 在评论中指出 :

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

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

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需要一些包,你想要安装