Một đầu ra `không phải là một lỗi tty` nghĩa là gì?


32

Tôi đã cố gắng viết đầu ra của lệnh php -ivào một tệp bằng cách sử dụng php -i > infovà nhận được lỗi sau:

output is not a tty

Nó có nghĩa là gì?

Tôi đang sử dụng git bashtrên Windows.


Hmm .. Trong thư mục bạn đang chạy lệnh, đã có tệp hoặc thư mục có tên "thông tin" chưa?

không, nhưng sau khi chạy lệnh, nó được tạo, chỉ trống và lỗi được xuất ra
Maxim Koretskyi

Vui lòng thử "strace php -i> thông tin" sau đó đăng kết quả đầu ra tại đây ..

Bạn đang sử dụng phiên bản php nào? Lệnh đã tạo tệp thông tin chính xác chưa?
michas

1
Tôi không có thời gian ngay bây giờ để viết câu trả lời cho vấn đề này, nhưng nếu có bất kỳ người trả lời nào muốn nhận mã thích của code.google.com/p/mintty/issues/detail?id=56 , trang chủ.ntlworld.com ./jonathan.deboynepollard/FGA/... , github.com/git-for-windows/git/issues/399 , github.com/rprichard/winpty , và github.com/docker/toolbox/issues/231 trong tay và chạy với họ, xin vui lòng.
JdeBP

Câu trả lời:


19

Điều gì làm việc cho tôi, dựa trên nhận xét của Peh cho stackoverflow.com/questions/33622087

Nếu bạn sử dụng C: \ Program Files \ Git \ bin \ bash.exe thay vì C: \ Program Files \ Git \ git-bash.exe thì lệnh hoạt động tốt


3
Điều này đã không làm việc cho tôi. Tôi nhận được lỗi tương tự.
Ryan

1
Nhưng nó đã làm việc cho tôi ngày hôm nay! Tôi không biết tại sao nó không hoạt động vài tháng trước. +1
Ryan

1
chỉ cần gõ bash bên trong git bash
Rivenfall

18

Tôi tìm thấy một chủ đề tương tự như thế này. Một giải pháp hiệu quả với tôi:

Viết

php.exe -i > info

thay vì

php -i > info

Vì vậy, yust nối thêm .exephần mở rộng cho các lệnh của bạn và nó hoạt động.

Tìm thấy giải pháp này tại đây: /programming//a/44727575/2377961


12

Nếu bạn tình cờ sử dụng winpty dưới mui xe, bạn phải vượt qua -Xallow-non-ttyđối số để khắc phục điều này:

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

$ winpty -Xallow-non-tty python -c 'print("hello")' | grep h
hello

1
Giải quyết vấn đề cho tôi khi sử dụng nodethông qua conemu.
jakub.g

Cảm ơn bạn rất nhiều ... Điều này làm việc cho tôi.
HassanSh__3571619

2

Tôi tin rằng vấn đề này liên quan nhiều hơn đến cách Git Bash xử lý đường ống và ít hơn về PHP, vì tôi gặp phải triệu chứng tương tự khi sử dụng Python trên Windows. Các câu trả lời hiện nhiều nhất bình chọn không làm việc cho tôi. Nó có thể hoạt động một vài tháng sau đó, dựa trên nhận xét nàynhận xét tiếp theo . Nhưng tôi không kiên nhẫn nên tôi chọn sử dụng Windows Command Prompt và, voila, nó hoạt động!

KHÔNG LÀM VIỆC trong Git Bash

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

CÔNG TRÌNH trong Dấu nhắc Lệnh

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

1

Bạn đang chuyển hướng đầu ra của bạn từ thiết bị đầu cuối của bạn (tty) đến một tệp. Do đó, đầu ra của bạn không còn là một tty.

Thông điệp làm cho ý nghĩa hoàn hảo. Tuy nhiên đây không phải là một lỗi.

Tôi không thể tái tạo hành vi này trên một hệ thống linux.


Xin lỗi, tôi đã bình luận sai chỗ. vui lòng chạy "strace php -i" và dán đầu ra (vài dòng cuối cùng lúc đầu).
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.