เอาต์พุต `ข้อผิดพลาด tty` หมายถึงอะไร?


32

ฉันพยายามเขียนผลลัพธ์ของคำสั่งphp -iไปยังไฟล์โดยใช้php -i > infoและได้รับข้อผิดพลาดต่อไปนี้:

output is not a tty

มันหมายความว่าอะไร?

ฉันกำลังใช้git bashบน Windows


อืม .. ในไดเรกทอรีที่คุณใช้คำสั่งมีไฟล์หรือไดเรกทอรีชื่อ "info" อยู่แล้วหรือไม่?

ไม่ แต่หลังจากรันคำสั่งมันจะถูกสร้างขึ้นเพียงว่างเปล่าและข้อผิดพลาดจะถูกส่งออก
Maxim Koretskyi

โปรดลอง "strace php -i> info" แล้วโพสต์ผลลัพธ์ที่นี่ ..

คุณใช้ php เวอร์ชันใดอยู่ คำสั่งสร้างไฟล์ข้อมูลอย่างถูกต้องหรือไม่?
michas

1
ตอนนี้ฉันยังไม่มีเวลาเขียนคำตอบสำหรับเรื่องนี้ แต่ถ้าผู้ตอบต้องการที่จะชอบ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และgithub.com/docker/toolbox/issues/231ในมือและวิ่ง กับพวกเขาโปรดอย่าลังเล
JdeBP

คำตอบ:


19

สิ่งที่ทำงานให้ฉันตามความเห็นของ Peh ไปที่ stackoverflow.com/questions/33622087

หากคุณใช้ C: \ Program Files \ Git \ bin \ bash.exe แทนที่จะเป็น C: \ Program Files \ Git \ git-bash.exe คำสั่งจะทำงานได้ดี


3
สิ่งนี้ไม่ได้ผลสำหรับฉัน ฉันได้รับข้อผิดพลาดเดียวกัน
Ryan

1
แต่มันใช้ได้สำหรับฉันวันนี้! ฉันไม่รู้ว่าทำไมมันไม่ทำงานเมื่อสองสามเดือนก่อน +1
Ryan

1
เพียงพิมพ์ bash ใน git bash
Rivenfall

18

ฉันพบหัวข้อที่คล้ายกันเช่นนี้ ทางออกหนึ่งที่เหมาะกับฉัน:

เขียน

php.exe -i > info

แทน

php -i > info

ดังนั้นคุณต้องต่อท้าย.exeส่วนขยายของคำสั่งและใช้งานได้

พบโซลูชันนี้ที่นี่: /programming//a/44727575/2377961


12

หากคุณกำลังใช้ 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

1
การแก้ไขปัญหาสำหรับฉันเมื่อใช้ผ่านnode conemu
jakub.g

ขอบคุณมาก ... มันใช้งานได้สำหรับฉัน
HassanSh__3571619

2

ฉันเชื่อว่าปัญหานี้เป็นเรื่องเกี่ยวกับวิธีการที่ Git Bash จัดการกับการวางท่อและน้อยกว่าเกี่ยวกับ PHP เพราะฉันพบอาการเดียวกันโดยใช้ Python บน Windows คำตอบขณะนี้การโหวตมากที่สุดไม่ทำงานสำหรับฉัน มันอาจจะทำงานไม่กี่เดือนต่อมาขึ้นอยู่กับความคิดเห็นนี้และแสดงความคิดเห็นการติดตาม แต่ฉันก็ใจร้อนดังนั้นฉันเลือกที่จะใช้ Windows Command Prompt ดั้งเดิมและ voila ใช้งานได้!

ไม่ทำงานใน Git Bash

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

ทำงานในพร้อมรับคำสั่ง

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

1

คุณกำลังนำคุณออกจาก terminal (tty) ของคุณไปยังไฟล์ ดังนั้นผลลัพธ์ของคุณจึงไม่ใช่ tty อีกต่อไป

ข้อความทำให้รู้สึกที่สมบูรณ์แบบ อย่างไรก็ตามสิ่งนี้ไม่ควรเป็นข้อผิดพลาด

ฉันไม่สามารถทำซ้ำพฤติกรรมนี้ในระบบ linux


ขออภัยฉันแสดงความคิดเห็นผิดที่ โปรดเรียกใช้ "strace php -i" และวางผลลัพธ์ (ไม่กี่บรรทัดสุดท้ายในตอนแรก)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.