¿Qué significa un error de "salida no es un tty"?

32

Intenté escribir la salida del comando php -ien un archivo usando php -i > infoy recibí el siguiente error:

output is not a tty

Qué significa eso?

Estoy usando git bashen Windows.

Maxim Koretskyi
fuente
Hmm .. En el directorio donde está ejecutando el comando, ¿ya hay un archivo o directorio llamado "info"?
no, pero después de ejecutar el comando se crea, solo está vacío y se genera el error
Maxim Koretskyi
Intente con "strace php -i> info" y luego publique el resultado aquí ..
¿Qué versión de php estás usando? ¿El comando creó el archivo de información correctamente?
michas
1
No tengo tiempo en este momento para escribir una respuesta para esto, pero si alguien responde quiere tomar los gustos 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 , y github.com/docker/toolbox/issues/231 en la mano y corren con ellos, por favor siéntase libre.
JdeBP

Respuestas:

19

Lo que funcionó para mí, basado en los comentarios de Peh a stackoverflow.com/questions/33622087

Si usa C: \ Archivos de programa \ Git \ bin \ bash.exe en lugar de C: \ Archivos de programa \ Git \ git-bash.exe, entonces el comando funciona bien

targnation
fuente
3
Esto no funcionó para mí. Me sale el mismo error.
Ryan
1
¡Pero funcionó para mí hoy! No sé por qué no funcionó hace unos meses. +1
Ryan
1
solo escribe bash dentro de git bash
Rivenfall
18

Encontré un tema similar como este. Una solución que funcionó para mí:

Escribir

php.exe -i > info

en lugar de

php -i > info

Así que debe agregar la .exeextensión a sus comandos y funciona.

Encontré esta solución aquí: /programming//a/44727575/2377961

Radon8472
fuente
12

Si está utilizando winpty debajo del capó, debe pasar el -Xallow-non-ttyargumento para solucionar esto:

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

$ winpty -Xallow-non-tty python -c 'print("hello")' | grep h
hello
Chiel ten Brinke
fuente
1
Resolvió el problema para mí cuando lo uso a nodetravés de conemu.
jakub.g
Muchas gracias ... Esto funcionó para mí.
HassanSh__3571619
2

Creo que este problema es más sobre cómo Git Bash maneja las tuberías, y menos sobre PHP, porque encontré el mismo síntoma al usar Python en Windows. La respuesta más votada actualmente no funciona para mí. Podría funcionar unos meses más tarde, según este comentario y un comentario de seguimiento . Pero soy impaciente, así que elijo usar el símbolo del sistema nativo de Windows y, ¡listo, funciona!

NO FUNCIONA en Git Bash

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

TRABAJOS en el símbolo del sistema

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

Está redirigiendo su salida desde su terminal (tty) a un archivo. Por lo tanto, su salida ya no es un tty.

El mensaje tiene mucho sentido. Sin embargo, esto no debería ser un error.

No puedo reproducir este comportamiento en un sistema Linux.

michas
fuente
Lo siento, hice un comentario sobre el lugar equivocado. ejecute "strace php -i" y pegue la salida (las últimas líneas al principio).