来自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')
会返回 ture。