O que significa um erro "saída não é um tty"?


32

Tentei gravar a saída do comando php -ino arquivo a php -i > infoe recebi o seguinte erro:

output is not a tty

O que isso significa?

Estou usando git bashno Windows.


Hmm .. No diretório em que você está executando o comando, já existe um arquivo ou diretório chamado "info"?

não, mas depois de executar o comando que ele é criado, apenas a esvaziar e o erro é emitido
Maxim Koretskyi

Por favor, tente um "strace php -i> info" e poste a saída aqui ..

Qual versão do php você está usando? O comando criou o arquivo de informações corretamente?
Michas

1
No momento, não tenho tempo para escrever uma resposta para isso, mas se alguém responder responder a gostos de code.google.com/p/mintty/issues/detail?id=56 , homepage.ntlworld.com ./jonathan.deboynepollard/FGA/… , github.com/git-for-windows/git/issues/399 , github.com/rprichard/winpty e github.com/docker/toolbox/issues/231 na mão e execute com eles, por favor, sinta-se livre.
JdeBP

Respostas:


19

O que funcionou para mim, com base nos comentários de Peh em stackoverflow.com/questions/33622087

Se você usar C: \ Arquivos de Programas \ Git \ bin \ bash.exe em vez de C: \ Arquivos de Programas \ Git \ git-bash.exe, o comando funcionará bem


3
Isso não funcionou para mim. Eu recebo o mesmo erro.
Ryan

1
Mas funcionou para mim hoje! Não sei por que não funcionou há alguns meses atrás. 1
Ryan

1
basta digitar bash dentro do git bash
Rivenfall 5/07/12

18

Eu encontrei um tópico semelhante como este. Uma solução que funcionou para mim:

Escrever

php.exe -i > info

ao invés de

php -i > info

Então basta anexar a .exeextensão aos seus comandos e ela funciona.

Encontre esta solução aqui: /programming//a/44727575/2377961


12

Se você estiver usando o winpty sob o capô, precisará passar o -Xallow-non-ttyargumento para corrigir isso:

$ winpty python -c 'print("hello")' | grep h
stdout is not a tty

$ winpty -Xallow-non-tty python -c 'print("hello")' | grep h
hello

1
Resolvido o problema para mim ao usar nodecompletamente conemu.
jakub.g

Muito obrigado ... Isso funcionou para mim.
HassanSh__3571619 29/10

2

Acredito que esse problema seja mais sobre como o Git Bash lida com a tubulação e menos sobre o PHP, porque encontrei o mesmo sintoma usando o Python no Windows. A resposta atualmente mais votada não funciona para mim. Pode funcionar alguns meses depois, com base neste comentário e em um comentário subsequente . Mas estou impaciente, por isso optei por usar o prompt de comando nativo do Windows e, pronto, funciona!

NÃO FUNCIONA no Git Bash

rayluo@DESKTOP-10B0N4G MINGW64 ~
$ python -c "print('hello world')" > test.txt
stdout is not a tty

OBRAS no prompt de comando

(env27) C:\Users\rayluo>python -c "print('hello world')" > test.txt
(env27) C:\Users\rayluo>type test.txt
hello world

1

Você está redirecionando a saída do seu terminal (tty) para um arquivo. Portanto, sua saída não é mais um tty.

A mensagem faz todo sentido. No entanto, isso não deve ser um erro.

Não consigo reproduzir esse comportamento em um sistema linux.


Desculpe, eu comentei no lugar errado. por favor, execute "strace php -i" e cole a saída (últimas linhas no início).
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.