使用laravel artisan命令时,我没有得到预期的颜色输出。
如果你看http://laravel.com/docs/4.2/commands, 它说“要将输出发送到控制台,您可以使用信息,注释,问题和错误方法。这些方法中的每一种都将使用适当的ANSI颜色用于它们的目的。”
但是使用终端mintty或cmd,我不会得到那些颜色。
例如,$this->error('Something went wrong!');
应该输出红色背景的文本。
缺少什么才能获得此颜色功能?
答案 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用于向Windows终端添加对ANSI颜色的支持。我还没有使用它,但它似乎为现有的游戏机添加了功能。
ANSICON为Windows控制台程序提供ANSI转义序列。 它提供了与ANSI.SYS对MS-DOS相同的功能。
也就是说,当您想要ANSI颜色编码时,您似乎需要运行ansicon
命令:
例如,要显示使用青色黑色作为默认值的file.ans 颜色:
ansicon -m30 -t file.ans
正如您所看到的,它支持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命令。它也显示颜色。