web-dev-qa-db-ja.com

「出力はttyではありません」というエラーはどういう意味ですか?

コマンドphp -iの出力をphp -i > infoを使用してファイルに書き込もうとしたところ、次のエラーが発生しました:

output is not a tty

どういう意味ですか?

Windowsではgit bashを使用しています。

34
Maxim Koretskyi

私はこのような同様のトピックを見つけました。私のために働いた1つの解決策:

書く

php.exe -i > info

の代わりに

php -i > info

だから、.exe拡張機能をコマンドに追加すると機能します。

この解決策はここにあります: https://stackoverflow.com/a/44727575/2377961

25
Radon8472

Stackoverflow.com/questions/33622087へのPehのコメントに基づいて、私にとって何がうまくいったか

C:\ Program Files\Git\git-bash.exeの代わりにC:\ Program Files\Git\bin\bash.exeを使用すると、コマンドは正常に動作します

20
targnation

内部で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
15

この問題は、Git Bashがパイピングを処理する方法に関するものであり、PHPに関するものではなく、WindowsでPythonを使用して同じ症状が発生したためです。 現在最も投票されている回答 =は機能しません。数か月後に このコメントフォローアップコメント に基づいて機能する可能性があります。しかし、私は焦っており、使用することにしましたネイティブのWindowsコマンドプロンプトで動作します。

Git Bashで機能しない

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

コマンドプロンプトのWORKS

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

端末(tty)からの出力をファイルにリダイレクトしています。したがって、出力はttyではなくなります。

メッセージは完全に理にかなっています。ただし、これはエラーではありません。

Linuxシステムでこの動作を再現できません。

1
michas