PHP shell_exec / passthru, показывающий вывод, отличный от фактического вывода оболочки

Я пытаюсь отобразить вывод команды оболочки, используя PHP passthru функция. Я получаю дополнительный [0;32m где фактический выход оболочки имеет зеленую линию, и я также получаю дополнительную [m в начале несколько других строк.

Что мне нужно сделать, чтобы получить вывод PHP без этих дополнительных символов?

Моя команда PHP:

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

1 ответ

Решение

Я не знаю что cCompiledScript есть, но ясно, что он выводит escape-последовательности ANSI для генерации цвета на терминале. Он может иметь флаг командной строки или переменную окружения, которые можно установить для отключения вывода цвета. Если вы написали cCompiledScript Вы можете добавить флаг, чтобы отключить цвет. В противном случае вам придется раздеть цветовые коды:

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

sed Команда выше взята из этого ответа на Unix & Linux Stack Exchange.

Другие вопросы по тегам