Co oznacza błąd „wynik nie jest tty”?


32

Próbowałem zapisać dane wyjściowe polecenia php -iw pliku za pomocą php -i > infoi otrzymałem następujący błąd:

output is not a tty

Co to znaczy?

Używam git bashw systemie Windows.


Hmm .. Czy w katalogu, w którym uruchamiasz polecenie, jest już plik lub katalog o nazwie „info”?

nie, ale po uruchomieniu polecenia jest on tworzony, tylko pusty i generowany jest błąd
Maxim Koretskyi

Spróbuj użyć „strace php -i> info”, a następnie opublikuj wynik tutaj ..

Jakiej wersji php używasz? Czy polecenie utworzyło plik informacyjny poprawnie?
michas,

1
Nie mam teraz czasu, aby napisać odpowiedź na to pytanie, ale jeśli ktoś chce odpowiedzieć na kod.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 i github.com/docker/toolbox/issues/231 w ręce i biegnij z nimi, proszę czuć się swobodnie.
JdeBP,

Odpowiedzi:


19

Co dla mnie zadziałało, na podstawie komentarzy Peha do stackoverflow.com/questions/33622087

Jeśli użyjesz C: \ Program Files \ Git \ bin \ bash.exe zamiast C: \ Program Files \ Git \ git-bash.exe, to polecenie działa dobrze


3
To mi nie zadziałało. Otrzymuję ten sam błąd.
Ryan,

1
Ale dzisiaj zadziałało dla mnie! Nie wiem, dlaczego to nie zadziałało kilka miesięcy temu. +1
Ryan,

1
po prostu wpisz bash wewnątrz git bash
Rivenfall

18

Znalazłem podobny temat jak ten. Jedno rozwiązanie, które działało dla mnie:

pisać

php.exe -i > info

zamiast

php -i > info

Więc dodaj .exerozszerzenie do swoich poleceń i działa.

Znaleziono to rozwiązanie tutaj: /programming//a/44727575/2377961


12

Jeśli używasz winpty pod maską, musisz przekazać -Xallow-non-ttyargument, aby to naprawić:

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

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

1
Rozwiązałem problem dla mnie podczas korzystania nodez conemu.
jakub.g,

Dziękuję bardzo ... To zadziałało dla mnie.
HassanSh__3571619

2

Wierzę, że ten problem dotyczy bardziej tego, jak Git Bash obsługuje piping, a mniej PHP, ponieważ napotkałem ten sam symptom przy użyciu Pythona w systemie Windows. Obecnie najbardziej głosowało odpowiedź nie działa dla mnie. Może to działać kilka miesięcy później, w oparciu o ten komentarz i komentarz uzupełniający . Ale jestem niecierpliwy, więc wybrałem natywny wiersz polecenia systemu Windows i, voila, działa!

NIE DZIAŁA w Git Bash

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

DZIAŁA w wierszu polecenia

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

1

Przekierowujesz dane wyjściowe z terminala (tty) do pliku. Dlatego twój wynik nie jest już tty.

Wiadomość ma doskonały sens. Jednak nie powinien to być błąd.

Nie mogę odtworzyć tego zachowania w systemie Linux.


Przepraszam, skomentowałem niewłaściwe miejsce. uruchom „strace php -i” i wklej dane wyjściowe (najpierw kilka ostatnich linii).
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.