我正在尝试使用 PHP 的passthru
函数显示 shell 命令的输出。我得到了一个额外[0;32m
的,实际的 shell 输出有一条绿线,并且[m
在其他几行的开头也得到了一个额外的。
在没有这些额外字符的情况下,我需要做什么才能获得 PHP 输出?
我的 PHP 命令是:
passthru('/var/www/cCompiledScript');
我正在尝试使用 PHP 的passthru
函数显示 shell 命令的输出。我得到了一个额外[0;32m
的,实际的 shell 输出有一条绿线,并且[m
在其他几行的开头也得到了一个额外的。
在没有这些额外字符的情况下,我需要做什么才能获得 PHP 输出?
我的 PHP 命令是:
passthru('/var/www/cCompiledScript');
我不知道是什么cCompiledScript
,但显然它正在输出 ANSI 转义序列以在终端上生成颜色。它可能有一个命令行标志或环境变量,您可以将其设置为禁用颜色输出。如果你写了cCompiledScript
,你可以添加一个标志来禁用颜色。否则你将不得不去掉颜色代码:
passthru('/var/www/cCompiledScript | sed "s/\x1B\[\([0-9]\{1,2\}\(;[0-9]\{1,2\}\)\?\)\?[mGK]//g"');
上面的sed
命令来自Unix & Linux Stack Exchange上的这个答案。