2

所以我正在Process为一些命令运行 Symfony,我注意到当我将这些命令写入 Symfony 时OutputInterface,它没有显示颜色或进度条。我认为命令(npm、artisan、ls 等)正在使用终端控制代码,其中一个类正在使用非标准 ASCII 字符。

编辑:我已经做了一些挖掘,我相信 SymfonyStreamOutput默认使用它的类。它似乎能够以彩色输出,我试过告诉它OUTPUT_RAW. 那里没有豆子。也许问题出在其他地方......

有没有一种内置的方法来告诉这些类不要这样做?我怎样才能得到我漂亮的输出?

4

1 回答 1

1

颜色的可用性取决于您调用的程序。您可以尝试设置 tty/pty:

protected function execute(InputInterface $input, OutputInterface $output) 
{
    $process = new Process('ls -l --color="always"');
    $process->setTty(true); // or $process->setPty(true);
    $process->run();
    $output->write($process->getOutput());
}

请参阅相关问题

我不认为命令输出会删除转义码。下一个例子效果很好(对我来说):

protected function execute(InputInterface $input, OutputInterface $output)
{
    $output->write(shell_exec('ls -l --color="always"')); // ok, output is colored
}

希望这可以帮助。

于 2016-11-27T19:23:58.483 回答