Que signifie une erreur «sortie n'est pas un tty»?

32

J'ai essayé d'écrire la sortie de la commande php -idans un fichier en utilisant php -i > infoet j'ai reçu l'erreur suivante:

output is not a tty

Qu'est-ce que ça veut dire?

J'utilise git bashsur Windows.

Maxim Koretskyi
la source
Hmm .. Dans le répertoire où vous exécutez la commande, y a-t-il déjà un fichier ou un répertoire appelé "info"?
non, mais après avoir exécuté la commande, elle est créée, uniquement vide et l'erreur est générée
Maxim Koretskyi
Veuillez essayer un "strace php -i> info" puis poster la sortie ici ..
Quelle version de php utilisez-vous? La commande a-t-elle créé le fichier d'informations correctement?
michas
1
Je n'ai pas le temps pour l'instant de rédiger une réponse à cela, mais si un répondeur veut prendre des goûts de 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 et github.com/docker/toolbox/issues/231 en main et en cours d'exécution avec eux, n'hésitez pas.
JdeBP

Réponses:

19

Ce qui a fonctionné pour moi, basé sur les commentaires de Peh à stackoverflow.com/questions/33622087

Si vous utilisez C: \ Program Files \ Git \ bin \ bash.exe au lieu de C: \ Program Files \ Git \ git-bash.exe, la commande fonctionne correctement

targnation
la source
3
Ça n'a pas marché pour moi. J'ai la même erreur.
Ryan
1
Mais cela a fonctionné pour moi aujourd'hui! Je ne sais pas pourquoi cela n'a pas fonctionné il y a quelques mois. +1
Ryan
1
il suffit de taper bash inside git bash
Rivenfall
18

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

Écrire

php.exe -i > info

au lieu de

php -i > info

Alors, ajoutez l' .exeextension à vos commandes et cela fonctionne.

Trouvé cette solution ici: /programming//a/44727575/2377961

Radon8472
la source
12

S'il vous arrive d'utiliser Winpty sous le capot, vous devez passer l' -Xallow-non-ttyargument 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
Chiel ten Brinke
la source
1
Résolu le problème pour moi lors de l'utilisation nodevia conemu.
jakub.g
Merci beaucoup ... Cela a fonctionné pour moi.
HassanSh__3571619
2

Je crois que ce problème concerne davantage la façon dont Git Bash gère la tuyauterie, et moins PHP, car j'ai rencontré le même problème en utilisant Python sous Windows. La réponse actuellement la plus votée ne fonctionne pas pour moi. Cela pourrait fonctionner quelques mois plus tard, sur la base de ce commentaire et d'un commentaire de suivi . Mais je suis impatient alors j'ai choisi d'utiliser l'invite de commande Windows native et, le tour est joué, ç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
RayLuo
la source
1

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

Le message est parfaitement logique. Cependant, cela ne devrait pas être une erreur.

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

michas
la source
Désolé, j'ai fait un commentaire au mauvais endroit. veuillez exécuter "strace php -i" et collez la sortie (quelques dernières lignes au début).