从php脚本执行彩色命令

jea*_*nod 12 php command colors command-line-interface

我有一个命令,例如'git diff',当我从终端运行它时输出一个彩色结果.

现在,我想从CLI php脚本调用该命令,并在控制台中显示彩色结果.我尝试使用exec(),system(),passthru()但是在所有情况下输出都已转换为纯黑白文本.

有没有办法保留标准结果的颜色?如果没有,有人知道为什么这些信息会丢失吗?

Mar*_*eed 6

您运行的命令很可能正在检查是否输出到终端而不是将其着色(如果不是).通常有一种强迫它的方法,但这将特定于命令本身; 在这种情况下git diff,您可以指定--color=always.

  • 不幸的是,命令真的*不像PHP执行它那样附加到终端(与shell的方式不同).即使你使用`passthru`,PHP也会把它放在命令和终端之间; 它只是在输出时不会修改输出.这不仅仅是颜色; 以这种方式运行时,全屏命令根本不起作用.如此缺乏一些精心设计的伪终端设置,我认为你无论如何都不能用PHP做,我认为没有一个通用的解决方案. (3认同)