我知道通过 stty -a 命令很容易找出终端的大小参数。使用本地 CLI PHP 脚本时,通过 system() 等获取输出完全没有问题。
但是我正在通过从 ssh 命令启动的 php 脚本尝试同样的事情。遗憾的是,stty
返回的只是:
stty: standard input: Invalid argument.
调用代码为:
exec('stty -a | head -n 1', $query);
echo $query[0];
所以问题是:我是否可以输出到终端并从中读取输入(例如,可以在 PHP 中从 STDIN 执行 fread()
并将 fwrite()
执行到 STDOUT ,stty
不应该也有有效的 STDIN 和 STDOUT 吗?
最佳答案
使用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 到服务器并然后在提示符处输入 tmux 或通过 ssh -t _server_ tmux
但不通过 sh _server_ tmux 来启动 tmux(或 screen)
.
关于php - 通过 PHP CLI 确定终端行/列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10163733/