web-dev-qa-db-fra.com

Qu'est-ce qu'une erreur `output n'est pas un tty`?

J'ai essayé d'écrire le résultat de la commande php -i dans un fichier à l'aide de php -i > info et j'ai reçu l'erreur suivante:

output is not a tty

Qu'est-ce que ça veut dire?

J'utilise git bash sous Windows.

24

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 à la place de C:\Program Files\Git\git-bash.exe, la commande fonctionne correctement.

15
targnation

Si vous utilisez Winpty sous le capot, vous devez passer l'argument -Xallow-non-tty pour résoudre ceci:

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

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

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

Donc, vous devez ajouter l’extension .exe à vos commandes et cela fonctionne.

Vous avez trouvé cette solution ici: https://stackoverflow.com/a/44727575/2377961

7
Radon8472

Je pense que ce problème concerne davantage la façon dont Git Bash gère la tuyauterie, et moins l'utilisation de PHP, car j'ai rencontré le même symptôme lors de l'utilisation de Python sous Windows. La réponse actuellement la plus votée ne fonctionne pas pour moi. Cela fonctionnera peut-être quelques mois plus tard, en se basant sur ce commentaire et un commentaire . Mais comme je suis impatiente, j'ai choisi d'utiliser l'invite de commande Windows native et, voila, ça marche!

NE FONCTIONNE PAS à Git Bash

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

TRAVAUX 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
2
RayLuo

Vous êtes en train de rediriger la sortie de votre terminal (tty) vers un fichier. Par conséquent, votre production 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.

1
michas