PHP shell_exec / passthru显示的输出与实际的shell输出不同

时间:2015-09-17 11:44:33

标签: php shell shell-exec passthru

我正在尝试使用PHP的passthru函数显示shell命令的输出。我得到一个额外的[0;32m,其中实际的shell输出有一条绿线,并且在其他几行的开头也得到了额外的[m

如果没有这些额外的字符,我需要做什么才能获得PHP输出?

我的PHP命令是:

passthru('/var/www/cCompiledScript');

1 个答案:

答案 0 :(得分:3)

我不知道cCompiledScript是什么,但很明显它输出ANSI转义序列以在终端上生成颜色。它可能有一个命令行标志或环境变量,您可以设置为禁用颜色输出。如果你写了cCompiledScript,你可以添加一个标志来禁用颜色。否则你将不得不去除颜色代码:

passthru('/var/www/cCompiledScript | sed "s/\x1B\[\([0-9]\{1,2\}\(;[0-9]\{1,2\}\)\?\)\?[mGK]//g"');

上面的sed命令来自this answer上的Unix & Linux Stack Exchange