コマンドphp -i
の出力をphp -i > info
を使用してファイルに書き込もうとしたところ、次のエラーが発生しました:
output is not a tty
どういう意味ですか?
Windowsではgit bash
を使用しています。
私はこのような同様のトピックを見つけました。私のために働いた1つの解決策:
書く
php.exe -i > info
の代わりに
php -i > info
だから、.exe
拡張機能をコマンドに追加すると機能します。
この解決策はここにあります: https://stackoverflow.com/a/44727575/2377961
Stackoverflow.com/questions/33622087へのPehのコメントに基づいて、私にとって何がうまくいったか
C:\ Program Files\Git\git-bash.exeの代わりにC:\ Program Files\Git\bin\bash.exeを使用すると、コマンドは正常に動作します
内部で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
この問題は、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
端末(tty)からの出力をファイルにリダイレクトしています。したがって、出力はttyではなくなります。
メッセージは完全に理にかなっています。ただし、これはエラーではありません。
Linuxシステムでこの動作を再現できません。