4

可能重复:
PHP 可以检测它是从 cron 作业还是从命令行运行?

我正在尝试确定 PHP 命令行脚本上的 STDOUT 资源是否正在通过管道传输到另一个命令,以便适当地显示表格数据(如果输出直接到终端,那么有表格单元格看起来不错包裹在+-----+边框中;但如果尝试使用awk或其他命令检查该数据,则不会。)

找到这个答案后,我尝试检查 STDOUT 资源stream_get_meta_data()以及我可以在 PHP 手册中找到的所有其他函数,这些函数对流进行操作,但在每种情况下,无论是通过管道传输到另一个资源,资源看起来都完全相同过程与否。

有没有办法在 PHP 中找到它?

4

1 回答 1

5

你可以使用posix_isatty假设你有 POSIX 扩展(你可能有):

posix_isatty(STDOUT)

如果它是真的,那么你没有输出到管道。 是在程序和其他程序isatty中执行此操作的常用方法。C

请注意,这不会检查它是否专门输出到管道,而只是检查它是否输出到交互式终端(管道不是一个)。

于 2012-09-10T22:55:17.830 回答