I tried to write the output of the command php -i to the a file using php -i > info and received the following error:
output is not a tty
What does it mean?
I'm using git bash on Windows.
Super User is a question and answer site for computer enthusiasts and power users. It only takes a minute to sign up.
Sign up to join this communityI tried to write the output of the command php -i to the a file using php -i > info and received the following error:
output is not a tty
What does it mean?
I'm using git bash on Windows.
I found an similar topic like this. One Solution which worked for me:
Write
php.exe -i > info
instead of
php -i > info
So yust append the .exe extension to your commands and it works.
Found this solution here: https://stackoverflow.com/a/44727575/2377961
php is a aliased to winpty php by default when running mintty. php.exe is not aliased, so it won't be launched using winpty. The aliases are setup by default because of compatibility issues, you may encounter those instead when not running winpty.
node as well, so: $ node.exe programname.js > output.file
Sep 1, 2023 at 1:47
If you happen to be using winpty under the hood, you have to pass the -Xallow-non-tty argument to fix this:
$ winpty python -c 'print("hello")' | grep h
stdout is not a tty
$ winpty -Xallow-non-tty python -c 'print("hello")' | grep h
hello
However, if the output is mangled, the -Xplain argument will also be required:
$ winpty -Xallow-non-tty python -c 'print("hello")' | xxd
00000000: 1b5b 306d 1b5b 304b 6865 6c6c 6f1b 5b30 .[0m.[0Khello.[0
00000010: 4b1b 5b3f 3235 6c0d 0a1b 5b30 4b1b 5b3f K.[?25l...[0K.[?
00000020: 3235 68 25h
$ winpty -Xallow-non-tty -Xplain python -c 'print("hello")' | xxd
00000000: 6865 6c6c 6f0d 0a hello..
winpty error, git-bash sets up aliases for node ipython php php5 psql python2.7 to use winpty in the script /etc/profile.d/aliases.sh
What worked for me, based on Peh's comments to stackoverflow.com/questions/33622087
If you use C:\Program Files\Git\bin\bash.exe instead of C:\Program Files\Git\git-bash.exe then the command works fine
I believe this issue is more about how Git Bash handles piping, and less about PHP, because I encountered the same symptom using Python on Windows. The currently most-voted answer does not work for me. It might work a few months later, based on this comment and a follow-up comment. But I'm impatient so I choose to use the native Windows Command Prompt and, voila, it works!
DOESN'T WORK in Git Bash
rayluo@DESKTOP-10B0N4G MINGW64 ~
$ python -c "print('hello world')" > test.txt
stdout is not a tty
WORKS in Command Prompt
(env27) C:\Users\rayluo>python -c "print('hello world')" > test.txt
(env27) C:\Users\rayluo>type test.txt
hello world
You are redirecting you output from your terminal (tty) to a file. Therefore your output is no longer a tty.
The message makes perfect sense. However this should not be an error.
I cannot reproduce this behavior on a linux system.