11

我写了一个php脚本。我希望它在以连接到 tty 设备(终端)的标准输入调用时显示帮助消息,然后以交互方式读取和执行,但在使用来自管道的文件或流作为标准输入调用时不显示。

有没有办法从 PHP 中检测到这一点?

4

2 回答 2

11

使用posix_isatty.

此函数接受文件描述符(整数)和 PHP 流。如果它接收到一个 PHP 流,它会自动尝试转换以获取文件描述符并改为使用它。

于 2010-09-06T03:38:54.343 回答
2

从 PHP 7.2 开始,您可以使用stream_isatty,它也适用于 Windows。

例如:

php -r "var_dump(stream_isatty(STDERR));"

结果是

bool(true)

php -r "var_dump(stream_isatty(STDERR));" 2>output.txt

结果是

bool(false)

(这当然也适用于 STDOUT)。

于 2018-03-20T14:24:32.427 回答