Cosa significa un errore `output non è un tty`?


32

Ho provato a scrivere l'output del comando php -iin un file utilizzando php -i > infoe ho ricevuto il seguente errore:

output is not a tty

Cosa significa?

Sto usando git bashsu Windows.


Hmm .. Nella directory in cui si esegue il comando, esiste già un file o una directory chiamata "info"?

no, ma dopo aver eseguito il comando viene creato, solo vuoto e viene emesso l'errore
Maxim Koretskyi,

Prova a "strace php -i> info", quindi pubblica qui l'output ..

Quale versione di php stai usando? Il comando ha creato correttamente il file informativo?
Michas,

1
Al momento non ho il tempo di scrivere una risposta per questo, ma se un risponditore vuole prendere like come 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 a portata di mano con loro, non esitate.
JdeBP,

Risposte:


19

Cosa ha funzionato per me, in base ai commenti di Peh a stackoverflow.com/questions/33622087

Se si utilizza C: \ Programmi \ Git \ bin \ bash.exe anziché C: \ Programmi \ Git \ git-bash.exe, il comando funziona correttamente


3
Questo non ha funzionato per me. Ho fatto lo stesso errore.
Ryan,

1
Ma ha funzionato per me oggi! Non so perché non ha funzionato alcuni mesi fa. +1
Ryan,

1
digita bash in git bash
Rivenfall il

18

Ho trovato un argomento simile come questo. Una soluzione che ha funzionato per me:

Scrivi

php.exe -i > info

invece di

php -i > info

Quindi aggiungi l' .exeestensione ai tuoi comandi e funziona.

Ho trovato questa soluzione qui: /programming//a/44727575/2377961


12

Se ti capita di usare winpty sotto il cofano, devi passare l' -Xallow-non-ttyargomento per risolvere questo problema:

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

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

1
Risolto il problema per me quando si utilizza nodeattraverso conemu.
jakub.g,

Grazie mille ... Questo ha funzionato per me.
HassanSh__3571619

2

Credo che questo problema riguardi più il modo in cui Git Bash gestisce il piping e meno su PHP, perché ho riscontrato lo stesso sintomo usando Python su Windows. La risposta attualmente più votata non funziona per me. Potrebbe funzionare qualche mese dopo, sulla base di questo commento e di un commento di follow-up . Ma sono impaziente, quindi scelgo di usare il prompt dei comandi di Windows nativo e, voilà, funziona!

NON FUNZIONA in Git Bash

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

FUNZIONA nel prompt dei comandi

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

1

Stai reindirizzando l'output dal tuo terminale (tty) a un file. Pertanto il tuo output non è più un tty.

Il messaggio ha perfettamente senso. Tuttavia, questo non dovrebbe essere un errore.

Non riesco a riprodurre questo comportamento su un sistema Linux.


Mi dispiace, ho fatto un commento sul posto sbagliato. eseguire "strace php -i" e incollare l'output (inizialmente poche righe).
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.