Composer 安装错误 - 输出不是 tty,输入不是 tty
Posted
技术标签:
【中文标题】Composer 安装错误 - 输出不是 tty,输入不是 tty【英文标题】:Composer installation error - output is not a tty, input is not a tty 【发布时间】:2016-02-10 20:44:12 【问题描述】:我正在尝试通过 php 安装 composer,如他们的网站中所述。
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。我该如何解决这个问题?
【问题讨论】:
看起来好像问题在于您是从 git bash 而不是从 Windows 命令行运行命令。但是,如果没有指向您所说的说明的链接,就很难确定。 是的,Johnston,当我在 Windows 命令提示符下使用时,它工作正常。我刚刚测试过,但没有使用 git bash。你认为这是 git bash 的问题吗?但是我之前也可以将它与 git bash 一起使用(在其他计算机/其他 git bash 版本中)。 【参考方案1】:可能是 PATH 或编码问题:
issue 25 提及:似乎
git ls-remote origin
,从新构建和安装的 MinGW Git 运行无法输出任何内容,而git ls-remote origin | cat
(从使用旧 MSys'/MinGW 的怪癖中学到的技巧)只说:@ 987654332@(退出码是127,提示找不到某个可执行文件,但是很难说是哪一个,因为连调试到stderr的打印语句都没有显示出来;看来是在crash或者死机的情况下( ), stderr 没有被刷新)
issue 519 甚至建议取消别名 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 指出in the comments:
如果您使用 C:`Program Files\Git\bin\bash.exe
instead of
C:\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 结合使用没有任何问题。
@Peh 感谢您的反馈。我已将其包含在答案中以提高知名度。
谢谢 Vonc 和 Peh。【参考方案2】:
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
现在在项目根目录中可见。
使用 composer 安装一个包。
$ php composer.phar 需要一些你想要安装的包
【讨论】:
很好的插图。 +1【参考方案3】:可以使用bash输出:C:\Program Files\Git\bin\bash.exe
【讨论】:
以上是关于Composer 安装错误 - 输出不是 tty,输入不是 tty的主要内容,如果未能解决你的问题,请参考以下文章
标准输出不是 tty。对节点 + 磁带 + Tap-spec 使用 bash
Composer 安装错误:ZipArchive::extractTo():完整提取路径超过 MAXPATHLEN (260)