我写了一个php脚本。我希望它在以连接到 tty 设备(终端)的标准输入调用时显示帮助消息,然后以交互方式读取和执行,但在使用来自管道的文件或流作为标准输入调用时不显示。
有没有办法从 PHP 中检测到这一点?
使用posix_isatty
.
此函数接受文件描述符(整数)和 PHP 流。如果它接收到一个 PHP 流,它会自动尝试转换它以获取文件描述符并改为使用它。
从 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)。