Что означает `вывод не является ошибкой tty`?

32

Я попытался записать вывод команды php -iв файл с помощью php -i > infoи получил следующую ошибку:

output is not a tty

Что это означает?

Я использую git bashна Windows.

Максим Корецкий
источник
Хм .. В каталоге, в котором вы запускаете команду, уже есть файл или каталог с именем "info"?
нет, но после запуска команды она создается, только пустая и выводится ошибка
Максим Корецкий
Пожалуйста, попробуйте "strace php -i> info", а затем
Какую версию php вы используете? Правильно ли команда создала информационный файл?
Михас
1
Сейчас у меня нет времени, чтобы написать ответ на этот вопрос, но если кто-то из ответчиков захочет взять что-то подобное 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 и github.com/docker/toolbox/issues/231 в руке и запустить с ними, пожалуйста, не стесняйтесь.
JdeBP

Ответы:

19

Что сработало для меня, основываясь на комментариях Пэ к stackoverflow.com/questions/33622087

Если вы используете C: \ Program Files \ Git \ bin \ bash.exe вместо C: \ Program Files \ Git \ git-bash.exe, то команда работает нормально.

targnation
источник
3
Это не сработало для меня. Я получаю ту же ошибку.
Райан
1
Но это сработало для меня сегодня! Я не знаю, почему это не сработало несколько месяцев назад. +1
Райан
1
просто введите bash внутри git bash
Rivenfall
18

Я нашел похожую тему, как это. Одно решение, которое сработало для меня:

Написать

php.exe -i > info

вместо того

php -i > info

Так что просто добавьте .exeрасширение к вашим командам, и оно работает.

Нашел это решение здесь: /programming//a/44727575/2377961

Radon8472
источник
12

Если вы используете winpty под капотом, вы должны передать -Xallow-non-ttyаргумент, чтобы это исправить:

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

$ winpty -Xallow-non-tty python -c 'print("hello")' | grep h
hello
Чиль тен бринке
источник
1
Решил проблему для меня при использовании nodeчерез conemu.
jakub.g
Большое вам спасибо ... Это сработало для меня.
HassanSh__3571619
2

Я считаю, что эта проблема больше связана с тем, как Git Bash обрабатывает трубопроводы, а не с PHP, потому что я столкнулся с тем же симптомом при использовании Python в Windows. В настоящее время наиболее голосовали ответ не работает для меня. Это может сработать через несколько месяцев, основываясь на этом комментарии и последующем комментарии . Но я нетерпелив, поэтому я решил использовать встроенную командную строку Windows и, вуаля, она работает!

НЕ РАБОТАЕТ в Git Bash

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

РАБОТАЕТ в командной строке

(env27) C:\Users\rayluo>python -c "print('hello world')" > test.txt
(env27) C:\Users\rayluo>type test.txt
hello world
RayLuo
источник
1

Вы перенаправляете свой вывод из вашего терминала (tty) в файл. Поэтому ваш вывод больше не tty.

Сообщение имеет смысл. Однако это не должно быть ошибкой.

Я не могу воспроизвести это поведение в системе Linux.

Михась
источник
Извините, я прокомментировал не то место. Пожалуйста, запустите "strace php -i" и вставьте вывод (сначала несколько последних строк).