From 43548021dec7e07fd9a9b01d649d565a48f5ea73 Mon Sep 17 00:00:00 2001 From: Daniel Kinzler Date: Mon, 15 Sep 2008 09:53:52 +0000 Subject: [PATCH] bug #15602: use echo for error messages if STDERR is undefined --- includes/Exception.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/includes/Exception.php b/includes/Exception.php index 5aa9ba5faa..e2f76f2a10 100644 --- a/includes/Exception.php +++ b/includes/Exception.php @@ -169,7 +169,7 @@ class MWException extends Exception { wfDebugLog( 'exception', $log ); } if ( $wgCommandLineMode ) { - fwrite( STDERR, $this->getText() ); + wfPrintError( $this->getText() ); } else { $this->reportHTML(); } @@ -268,7 +268,7 @@ function wfReportException( Exception $e ) { $e2->__toString() . "\n"; if ( !empty( $GLOBALS['wgCommandLineMode'] ) ) { - fwrite( STDERR, $message ); + wfPrintError( $message ); } else { echo nl2br( htmlspecialchars( $message ) ). "\n"; } @@ -278,6 +278,21 @@ function wfReportException( Exception $e ) { } } +/** + * Print a message, if possible to STDERR. + * Use this in command line mode only (see wgCommandLineMode) + */ +function wfPrintError( $message ) { + #NOTE: STDERR may not be available, especially if php-cgi is used from the command line (bug #15602). + # Try to produce meaningful output anyway. Using echo may corrupt output to STDOUT though. + if ( defined( 'STDERR' ) ) { + fwrite( STDERR, $message ); + } + else { + echo( $message ); + } +} + /** * Exception handler which simulates the appropriate catch() handling: * -- 2.20.1