Що означає помилка `висновок не tty`?


32

Я спробував записати вихід команди php -iв файл, використовуючи php -i > infoта отримав таку помилку:

output is not a tty

Що це означає?

Я використовую git bashв Windows.


Хм .. У каталозі, у якому ви виконуєте команду, чи є вже файл або каталог з назвою "інформація"?

ні, але після запуску команди вона створюється, лише порожня і виводиться помилка
Максим Корецький

Будь ласка, спробуйте "strace php -i> info", а потім опублікуйте вихід тут ..

Яку версію php ви використовуєте? Чи правильно команда створила файл інформації?
michas

1
Зараз у мене немає часу, щоб написати відповідь на це, але якщо хтось із користувачів, хто хоче відповісти, хоче вподобати code.google.com/p/mintty/isissue/detail?id=56 , homepage.ntlworld.com ./jonathan.deboynepollard/FGA/… , github.com/git-for-windows/git/isissue/399 , github.com/rprichard/winpty та github.com/docker/toolbox/isissue/231 у руці та запустіть з ними, будь ласка, не соромтеся.
JdeBP

Відповіді:


19

Що працювало для мене, грунтуючись на коментарях Пеха до stackoverflow.com/questions/33622087

Якщо ви використовуєте C: \ Program Files \ Git \ bin \ bash.exe замість C: \ Program Files \ Git \ git-bash.exe, тоді команда працює добре


3
Це не спрацювало для мене. Я отримую ту ж помилку.
Райан

1
Але це працювало на мене сьогодні! Я не знаю, чому це не вийшло кілька місяців тому. +1
Райан

1
просто наберіть bash inside git bash
Rivenfall

18

Я знайшов подібну тему, як ця. Одне рішення, яке працювало для мене:

Пишіть

php.exe -i > info

замість

php -i > info

Отже, ви додасте .exeрозширення до своїх команд, і воно працює.

Знайшли таке рішення тут: /programming//a/44727575/2377961


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

1

Ви переспрямовуєте свій вихід із терміналу (tty) у файл. Тому ваш вихід вже не є десятки.

Повідомлення має ідеальний сенс. Однак це не повинно бути помилкою.

Я не можу відтворити цю поведінку в системі Linux.


Вибачте, я коментував неправильне місце. будь ласка, запустіть "strace php -i" та вставте висновок (спочатку останні рядки спочатку).
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.