21

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

output is not a tty

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

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

5 ответов5

13

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

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

5

Если вы используете 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
3

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

Написать

php.exe -i > info

вместо

php -i > info

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

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

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
1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .