|
@@ -42,6 +42,26 @@ class ConsoleOutput extends StreamOutput
|
|
|
*/
|
|
|
public function __construct($verbosity = self::VERBOSITY_NORMAL, $decorated = null, OutputFormatterInterface $formatter = null)
|
|
|
{
|
|
|
- parent::__construct(fopen('php://stdout', 'w'), $verbosity, $decorated, $formatter);
|
|
|
+ $outputStream = 'php://stdout';
|
|
|
+ if (!$this->hasStdoutSupport()) {
|
|
|
+ $outputStream = 'php://output';
|
|
|
+ }
|
|
|
+
|
|
|
+ parent::__construct(fopen($outputStream, 'w'), $verbosity, $decorated, $formatter);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns true if current environment supports writing console output to
|
|
|
+ * STDOUT.
|
|
|
+ *
|
|
|
+ * IBM iSeries (OS400) exhibits character-encoding issues when writing to
|
|
|
+ * STDOUT and doesn't properly convert ASCII to EBCDIC, resulting in garbage
|
|
|
+ * output.
|
|
|
+ *
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+ protected function hasStdoutSupport()
|
|
|
+ {
|
|
|
+ return ('OS400' != php_uname('s'));
|
|
|
}
|
|
|
}
|