Apa arti dari `output bukan kesalahan tty`?

32

Saya mencoba menulis output dari perintah php -ike file menggunakan php -i > infodan menerima kesalahan berikut:

output is not a tty

Apa artinya?

Saya menggunakan git bashWindows.

Maxim Koretskyi
sumber
Hmm .. Di direktori Anda menjalankan perintah, apakah sudah ada file atau direktori yang disebut "info"?
tidak, tetapi setelah menjalankan perintah itu dibuat, hanya kosong dan kesalahan
dihasilkan
Silakan coba "strace php -i> info" kemudian posting hasilnya di sini ..
Versi php mana yang Anda gunakan? Apakah perintahnya membuat file info dengan benar?
michas
1
Saya tidak punya waktu sekarang untuk menulis jawaban untuk ini, tetapi jika ada penjawab ingin mengambil suka code.google.com/p/mintty/issues/detail?id=56 , homepage.ntlworld.com ./jonathan.deboynepollard/FGA/… , github.com/git-for-windows/git/issues/399 , github.com/rprichard/winpty , dan github.com/docker/toolbox/issues/231 di tangan dan jalankan dengan mereka, silakan.
JdeBP

Jawaban:

19

Apa yang berhasil untuk saya, berdasarkan komentar Peh ke stackoverflow.com/questions/33622087

Jika Anda menggunakan C: \ Program Files \ Git \ bin \ bash.exe alih-alih C: \ Program Files \ Git \ git-bash.exe maka perintah tersebut berfungsi dengan baik

penargetan
sumber
3
Ini tidak berhasil untuk saya. Saya mendapatkan kesalahan yang sama.
Ryan
1
Tapi itu berhasil untuk saya hari ini! Saya tidak tahu mengapa itu tidak berhasil beberapa bulan yang lalu. +1
Ryan
1
cukup ketik bash di dalam git bash
Rivenfall
18

Saya menemukan topik serupa seperti ini. Satu Solusi yang bekerja untuk saya:

Menulis

php.exe -i > info

dari pada

php -i > info

Jadi, Anda harus menambahkan .exeekstensi ke perintah Anda dan itu berfungsi.

Temukan solusi ini di sini: /programming//a/44727575/2377961

Radon8472
sumber
12

Jika Anda kebetulan menggunakan winpty di bawah tenda, Anda harus melewati -Xallow-non-ttyargumen untuk memperbaikinya:

$ winpty python -c 'print("hello")' | grep h
stdout is not a tty

$ winpty -Xallow-non-tty python -c 'print("hello")' | grep h
hello
Chiel ten Brinke
sumber
1
Memecahkan masalah bagi saya saat menggunakan nodemelalui conemu.
jakub.g
Terima kasih banyak ... Ini berhasil untuk saya.
HassanSh__3571619
2

Saya percaya masalah ini lebih tentang bagaimana Git Bash menangani perpipaan, dan lebih sedikit tentang PHP, karena saya mengalami gejala yang sama menggunakan Python di Windows. Jawaban yang paling banyak dipilih saat ini tidak berfungsi untuk saya. Mungkin bekerja beberapa bulan kemudian, berdasarkan komentar ini dan komentar tindak lanjut . Tapi saya tidak sabar jadi saya memilih untuk menggunakan Prompt Windows Command asli dan, voila, berhasil!

JANGAN BEKERJA di Git Bash

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

BEKERJA di Command Prompt

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

Anda mengarahkan output Anda dari terminal Anda (tty) ke file. Karena itu output Anda tidak lagi tty.

Pesan itu masuk akal. Namun ini seharusnya tidak menjadi kesalahan.

Saya tidak dapat mereproduksi perilaku ini pada sistem linux.

michas
sumber
Maaf, saya mengomentari tempat yang salah. silakan jalankan "strace php -i" dan tempel output (beberapa baris terakhir pada awalnya).