54 votes

Que signifie l'erreur " la sortie n'est pas un tty " ?

J'ai essayé d'écrire la sortie de la commande php -i vers un fichier en utilisant php -i > info et a reçu l'erreur suivante :

output is not a tty

Qu'est-ce que cela signifie ?

J'utilise git bash sur Windows.

49voto

Radon8472 Points 602

J'ai trouvé un sujet similaire à celui-ci. Une solution qui a fonctionné pour moi :

Écrire à

php.exe -i > info

au lieu de

php -i > info

Il suffit donc d'ajouter le .exe à vos commandes et cela fonctionne.

J'ai trouvé cette solution ici : https://stackoverflow.com/a/44727575/2377961

26voto

chtenb Points 1645

Si vous utilisez winpty sous le capot, vous devez passer l'attribut -Xallow-non-tty pour résoudre ce problème :

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

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

Cependant, si la sortie est tronquée, la fonction -Xplain sera également nécessaire :

$ 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..

23voto

targnation Points 331

Ce qui a fonctionné pour moi, d'après les commentaires de Peh sur stackoverflow.com/questions/33622087

Si vous utilisez C:\Program Fichiers \Git\bin\bash.exe au lieu de C:\Program Fichiers \Git\git -bash.exe alors la commande fonctionne bien.

3voto

RayLuo Points 249

Je pense que ce problème est plus lié à la façon dont Git Bash gère le piping, et moins à PHP, car j'ai rencontré le même symptôme en utilisant Python sous Windows. Le site réponse actuellement la plus votée ne fonctionne pas pour moi. Cela pourrait fonctionner quelques mois plus tard, en fonction de ce commentaire y un commentaire de suivi . Mais comme je suis impatient, je choisis d'utiliser l'invite de commande native de Windows et, voilà, ça marche !

NE FONCTIONNE PAS dans Git Bash

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

Fonctionne dans l'invite de commande

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

1voto

Jonathan Aquino Points 231

Vous redirigez la sortie de votre terminal (tty) vers un fichier. Par conséquent, votre sortie n'est plus un tty.

Le message est parfaitement logique. Cependant, il ne devrait pas s'agir d'une erreur.

Je ne peux pas reproduire ce comportement sur un système linux.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X