laravel artisan命令颜色不显示

时间:2015-04-02 20:54:11

标签: php laravel terminal artisan

使用laravel artisan命令时,我没有得到预期的颜色输出。

如果你看http://laravel.com/docs/4.2/commands, 它说“要将输出发送到控制台,您可以使用信息,注释,问题和错误方法。这些方法中的每一种都将使用适当的ANSI颜色用于它们的目的。”

但是使用终端mintty或cmd,我不会得到那些颜色。

例如,$this->error('Something went wrong!');应该输出红色背景的文本。

缺少什么才能获得此颜色功能?

4 个答案:

答案 0 :(得分:1)

我知道这是一个陈旧的答案,但这里的其他答案并非如此质量

问题:

正如您所发现的,本机Windows命令行不支持ANSI颜色。 Here you can find another SO answer with more details and useful links,但这是一个重要的摘录:

  

ANSI.SYS也适用于16位遗留程序的NT派生系统   在NTVDM下执行。

     

Win32控制台本身不支持ANSI转义序列   所有。然而,诸如Ansicon之类的软件可以作为一个包装器   标准的Win32控制台并添加对ANSI转义序列的支持。

解决方案(简单):

Ansicon

如摘录中所述,软件Ansicon用于向Windows终端添加对ANSI颜色的支持。我还没有使用它,但它似乎为现有的游戏机添加了功能。

  

ANSICON为Windows控制台程序提供ANSI转义序列。   它提供了与ANSI.SYS对MS-DOS相同的功能。

也就是说,当您想要ANSI颜色编码时,您似乎需要运行ansicon命令:

  

例如,要显示使用青色黑色作为默认值的file.ans   颜色:

ansicon -m30 -t file.ans

另一种解决方案(更简单):

cmder

Cmder in action

正如您所看到的,它支持ANSI颜色,但它还内置了许多其他简洁的功能。它也模拟了一些Unix功能。

Cmder是我个人最喜欢的。

答案 1 :(得分:0)

尝试使用putty。它是Windows的免费软件ssh客户端。

答案 2 :(得分:0)

来自symfony/console的引用:2. * | 3. * | 4。*

/**
     * Returns true if the stream supports colorization.
     *
     * Colorization is disabled if not supported by the stream:
     *
     *  -  Windows before 10.0.10586 without Ansicon, ConEmu or Mintty
     *  -  non tty consoles
     *
     * @return bool true if the stream supports colorization, false otherwise
     */
    protected function hasColorSupport()
    {
        if (DIRECTORY_SEPARATOR === '\\') {
            return
                0 >= version_compare('10.0.10586', PHP_WINDOWS_VERSION_MAJOR.'.'.PHP_WINDOWS_VERSION_MINOR.'.'.PHP_WINDOWS_VERSION_BUILD)
                || false !== getenv('ANSICON')
                || 'ON' === getenv('ConEmuANSI')
                || 'xterm' === getenv('TERM');
        }

        return function_exists('posix_isatty') && @posix_isatty($this->stream);
    }

如果您在linux / macos客户端中使用ternimal,则需要安装并启用php_posix扩展以使posix_isatty()在远程服务器中可用。

$ yum install php-process

如果使用窗口,则DIRECTORY_SEPARATOR的值为\\。马丁的 答案应该起作用,因为getenv('ANSICON')将返回错误值。

答案 3 :(得分:-1)

这是Linux终端的神奇之处。这就是为什么我喜欢linux。 纯娱乐。 因为你使用Windows。默认情况下,cmd只有黑色和白色。您可以使用ansicon来显示命令颜色。 在我的例子中,我使用git bash运行laravel命令。它也显示颜色。