X-Git-Url: https://git.cyclocoop.org/%28%28?a=blobdiff_plain;f=thumb.php;h=04b3e42ac865901b36880722705edfb8b9b423df;hb=ef44f4308edbcd97d6e53d211716fa2dfa143c26;hp=34f641d1ea91ca773314d8e0ce13a24c8e4daea6;hpb=049e4514d012525e48727fcda2fc38279825cf12;p=lhc%2Fweb%2Fwiklou.git diff --git a/thumb.php b/thumb.php index 34f641d1ea..04b3e42ac8 100644 --- a/thumb.php +++ b/thumb.php @@ -21,6 +21,8 @@ * @ingroup Media */ +use MediaWiki\Logger\LoggerFactory; + define( 'MW_NO_OUTPUT_COMPRESSION', 1 ); require __DIR__ . '/includes/WebStart.php'; @@ -262,7 +264,8 @@ function wfStreamThumb( array $params ) { ); return; } catch ( MWException $e ) { - wfThumbError( 500, $e->getHTML() ); + wfThumbError( 500, $e->getHTML(), 'Exception caught while extracting thumb name', + array( 'exception' => $e ) ); return; } @@ -310,13 +313,14 @@ function wfStreamThumb( array $params ) { $thumbPath = $img->getThumbPath( $thumbName ); if ( $img->getRepo()->fileExists( $thumbPath ) ) { $starttime = microtime( true ); - $success = $img->getRepo()->streamFile( $thumbPath, $headers ); + $status = $img->getRepo()->streamFileWithStatus( $thumbPath, $headers ); $streamtime = microtime( true ) - $starttime; - if ( !$success ) { - wfThumbError( 500, 'Could not stream the file' ); - } else { + if ( $status->isOK() ) { RequestContext::getMain()->getStats()->timing( 'media.thumbnail.stream', $streamtime ); + } else { + wfThumbError( 500, 'Could not stream the file', null, array( 'file' => $thumbName, + 'path' => $thumbPath, 'error' => $status->getWikiText() ) ); } return; } @@ -356,12 +360,13 @@ function wfStreamThumb( array $params ) { } if ( $errorMsg !== false ) { - wfThumbError( $errorCode, $errorMsg ); + wfThumbError( $errorCode, $errorMsg, null, array( 'file' => $thumbName, 'path' => $thumbPath ) ); } else { // Stream the file if there were no errors - $success = $thumb->streamFile( $headers ); - if ( !$success ) { - wfThumbError( 500, 'Could not stream the file' ); + $status = $thumb->streamFileWithStatus( $headers ); + if ( !$status->isOK() ) { + wfThumbError( 500, 'Could not stream the file', null, array( + 'file' => $thumbName, 'path' => $thumbPath, 'error' => $status->getWikiText() ) ); } } } @@ -562,7 +567,6 @@ function wfExtractThumbParams( $file, $params ) { return null; } - /** * Output a thumbnail generation error message * @@ -579,9 +583,12 @@ function wfThumbErrorText( $status, $msgText ) { * * @param int $status * @param string $msgHtml HTML + * @param string $msgText Short error description, for internal logging. Defaults to $msgHtml. + * Only used for HTTP 500 errors. + * @param array $context Error context, for internal logging. Only used for HTTP 500 errors. * @return void */ -function wfThumbError( $status, $msgHtml ) { +function wfThumbError( $status, $msgHtml, $msgText = null, $context = array() ) { global $wgShowHostnames; header( 'Cache-Control: no-cache' ); @@ -592,6 +599,7 @@ function wfThumbError( $status, $msgHtml ) { HttpStatus::header( 403 ); header( 'Vary: Cookie' ); } else { + LoggerFactory::getInstance( 'thumb' )->error( $msgText ?: $msgHtml, $context ); HttpStatus::header( 500 ); } if ( $wgShowHostnames ) {