2

我知道通过命令很容易找出终端的大小参数stty -asystem()使用本地 CLI PHP 脚本时,通过左右抓取输出完全没有问题。

但是我正在通过从 ssh 命令开始的 php 脚本尝试同样的事情。可悲的是,所有stty返回的是:

stty: standard input: Invalid argument.

调用代码是:

exec('stty -a | head -n 1', $query);
echo $query[0];

所以问题是:如果我可以输出到终端并从中读取输入(例如,可以fread()从 STDINfwrite()到 PHP 中的 STDOUT,不应该stty也有有效的 STDIN 和 STDOUT?

4

1 回答 1

2

使用ssh -t

% php ~/src/termtest.php
speed 9600 baud; 39 rows; 127 columns;
% ssh localhost php ~/src/termtest.php
stty: stdin isn't a terminal
% ssh -t localhost php ~/src/termtest.php
speed 9600 baud; 39 rows; 127 columns;Connection to localhost closed.

默认情况下,SSH 不会传入功能齐全的终端。Shell 和 ncurses 似乎能够以某种方式获取它们,但是要直接从 SSH 启动需要它们的东西,您需要设置 -t。

出于同样的原因,您可以通过 ssh'ing 到服务器然后在提示符下或通过ssh -t _server_ tmux但不通过输入 tmux 来启动 tmux(或屏幕) sh _server_ tmux

于 2012-04-15T17:24:29.130 回答