php - 通过 PHP CLI 确定终端行/列

标签 php ssh command-line-interface stty

我知道通过 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/

相关文章:

php - 数据库中的IP地址比较

bash - 如何找到特定 tmux session 上正在运行的程序?

php - Laravel 远程 ssh 很慢

php - 抓取 HTML 表数据并创建 XML 文档

php - 无法在@dataProvider PHPUnit 中返回对象

php解析错误总是在最后一行

javascript - 使用 Node 创建 id_rsa 文件时格式无效

Python Click 在执行前确定链式命令的顺序

c++ - 如何使用 C++/CLI 包装器库为 native C++ 库导出多个类

php - 命令行指令解析