Consolidated web initialisation code into includes/WebStart.php. Moved profiling setup to a hook file "StartProfiler.php", following Brion's suggestion to merge Wikimedia's early profiling patch into subversion. Renamed Profiling.php and logProfilingData(), removed unnecessary wfProfileClose() calls.
This commit is contained in:
parent
0256e2c648
commit
3ea576aa25
18 changed files with 125 additions and 185 deletions
22
StartProfiler.php
Normal file
22
StartProfiler.php
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
require_once( './includes/ProfilerStub.php' );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To use a profiler, delete the line above and add something like this:
|
||||||
|
*
|
||||||
|
* require_once( './includes/Profiler.php' );
|
||||||
|
* $wgProfiler = new Profiler;
|
||||||
|
*
|
||||||
|
* Or for a sampling profiler:
|
||||||
|
* if ( !mt_rand( 0, 100 ) ) {
|
||||||
|
* require_once( './includes/Profiler.php' );
|
||||||
|
* $wgProfiler = new Profiler;
|
||||||
|
* } else {
|
||||||
|
* require_once( './includes/ProfilerStub.php' );
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* Configuration of the profiler output can be done in LocalSettings.php
|
||||||
|
*/
|
||||||
|
|
||||||
|
?>
|
||||||
17
img_auth.php
17
img_auth.php
|
|
@ -7,18 +7,9 @@
|
||||||
* to an array of pages you want everyone to be able to access. Your server must
|
* to an array of pages you want everyone to be able to access. Your server must
|
||||||
* support PATH_INFO, CGI-based configurations generally don't.
|
* support PATH_INFO, CGI-based configurations generally don't.
|
||||||
*/
|
*/
|
||||||
# Valid web server entry point, enable includes
|
require_once( './includes/WebStart.php' );
|
||||||
define( 'MEDIAWIKI', true );
|
wfProfileIn( 'img_auth.php' );
|
||||||
|
require_once( './includes/StreamFile.php' );
|
||||||
if ( isset( $_REQUEST['GLOBALS'] ) ) {
|
|
||||||
echo '<a href="http://www.hardened-php.net/index.76.html">$GLOBALS overwrite vulnerability</a>';
|
|
||||||
die( -1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
require_once( 'includes/Defines.php' );
|
|
||||||
require_once( './LocalSettings.php' );
|
|
||||||
require_once( 'includes/Setup.php' );
|
|
||||||
require_once( 'includes/StreamFile.php' );
|
|
||||||
|
|
||||||
if( !isset( $_SERVER['PATH_INFO'] ) ) {
|
if( !isset( $_SERVER['PATH_INFO'] ) ) {
|
||||||
wfForbidden();
|
wfForbidden();
|
||||||
|
|
@ -47,6 +38,7 @@ if( is_dir( $filename ) ) {
|
||||||
|
|
||||||
# Write file
|
# Write file
|
||||||
wfStreamFile( $filename );
|
wfStreamFile( $filename );
|
||||||
|
wfLogProfilingData();
|
||||||
|
|
||||||
function wfForbidden() {
|
function wfForbidden() {
|
||||||
header( 'HTTP/1.0 403 Forbidden' );
|
header( 'HTTP/1.0 403 Forbidden' );
|
||||||
|
|
@ -55,6 +47,7 @@ function wfForbidden() {
|
||||||
<h1>Access denied</h1>
|
<h1>Access denied</h1>
|
||||||
<p>You need to log in to access files on this server</p>
|
<p>You need to log in to access files on this server</p>
|
||||||
</body></html>";
|
</body></html>";
|
||||||
|
wfLogProfilingData();
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -122,7 +122,7 @@ function __autoload($className) {
|
||||||
'ParserCache' => 'includes/ParserCache.php',
|
'ParserCache' => 'includes/ParserCache.php',
|
||||||
'ProfilerSimple' => 'includes/ProfilerSimple.php',
|
'ProfilerSimple' => 'includes/ProfilerSimple.php',
|
||||||
'ProfilerSimpleUDP' => 'includes/ProfilerSimpleUDP.php',
|
'ProfilerSimpleUDP' => 'includes/ProfilerSimpleUDP.php',
|
||||||
'Profiler' => 'includes/Profiling.php',
|
'Profiler' => 'includes/Profiler.php',
|
||||||
'ProxyTools' => 'includes/ProxyTools.php',
|
'ProxyTools' => 'includes/ProxyTools.php',
|
||||||
'ProtectionForm' => 'includes/ProtectionForm.php',
|
'ProtectionForm' => 'includes/ProtectionForm.php',
|
||||||
'QueryPage' => 'includes/QueryPage.php',
|
'QueryPage' => 'includes/QueryPage.php',
|
||||||
|
|
|
||||||
|
|
@ -1153,21 +1153,17 @@ $wgTexvc = './math/texvc';
|
||||||
#
|
#
|
||||||
# You have to create a 'profiling' table in your database before using
|
# You have to create a 'profiling' table in your database before using
|
||||||
# profiling see maintenance/archives/patch-profiling.sql .
|
# profiling see maintenance/archives/patch-profiling.sql .
|
||||||
|
#
|
||||||
|
# To enable profiling, edit StartProfiler.php
|
||||||
|
|
||||||
/** Enable for more detailed by-function times in debug log */
|
|
||||||
$wgProfiling = false;
|
|
||||||
/** Only record profiling info for pages that took longer than this */
|
/** Only record profiling info for pages that took longer than this */
|
||||||
$wgProfileLimit = 0.0;
|
$wgProfileLimit = 0.0;
|
||||||
/** Don't put non-profiling info into log file */
|
/** Don't put non-profiling info into log file */
|
||||||
$wgProfileOnly = false;
|
$wgProfileOnly = false;
|
||||||
/** Log sums from profiling into "profiling" table in db. */
|
/** Log sums from profiling into "profiling" table in db. */
|
||||||
$wgProfileToDatabase = false;
|
$wgProfileToDatabase = false;
|
||||||
/** Only profile every n requests when profiling is turned on */
|
|
||||||
$wgProfileSampleRate = 1;
|
|
||||||
/** If true, print a raw call tree instead of per-function report */
|
/** If true, print a raw call tree instead of per-function report */
|
||||||
$wgProfileCallTree = false;
|
$wgProfileCallTree = false;
|
||||||
/** If not empty, specifies profiler type to load */
|
|
||||||
$wgProfilerType = '';
|
|
||||||
/** Should application server host be put into profiling table */
|
/** Should application server host be put into profiling table */
|
||||||
$wgProfilePerHost = false;
|
$wgProfilePerHost = false;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -181,8 +181,7 @@ function wfExceptionHandler( $e ) {
|
||||||
// Final cleanup, similar to wfErrorExit()
|
// Final cleanup, similar to wfErrorExit()
|
||||||
if ( $wgFullyInitialised ) {
|
if ( $wgFullyInitialised ) {
|
||||||
try {
|
try {
|
||||||
wfProfileClose();
|
wfLogProfilingData(); // uses $wgRequest, hence the $wgFullyInitialised condition
|
||||||
logProfilingData(); // uses $wgRequest, hence the $wgFullyInitialised condition
|
|
||||||
} catch ( Exception $e ) {}
|
} catch ( Exception $e ) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -243,13 +243,12 @@ function wfLogDBError( $text ) {
|
||||||
/**
|
/**
|
||||||
* @todo document
|
* @todo document
|
||||||
*/
|
*/
|
||||||
function logProfilingData() {
|
function wfLogProfilingData() {
|
||||||
global $wgRequestTime, $wgDebugLogFile, $wgDebugRawPage, $wgRequest;
|
global $wgRequestTime, $wgDebugLogFile, $wgDebugRawPage, $wgRequest;
|
||||||
global $wgProfiling, $wgUser;
|
global $wgProfiling, $wgUser;
|
||||||
$now = wfTime();
|
|
||||||
|
|
||||||
$elapsed = $now - $wgRequestTime;
|
|
||||||
if ( $wgProfiling ) {
|
if ( $wgProfiling ) {
|
||||||
|
$now = wfTime();
|
||||||
|
$elapsed = $now - $wgRequestTime;
|
||||||
$prof = wfGetProfilingOutput( $wgRequestTime, $elapsed );
|
$prof = wfGetProfilingOutput( $wgRequestTime, $elapsed );
|
||||||
$forward = '';
|
$forward = '';
|
||||||
if( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) )
|
if( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) )
|
||||||
|
|
@ -621,8 +620,7 @@ function wfAbruptExit( $error = false ){
|
||||||
wfDebug('WARNING: Abrupt exit\n');
|
wfDebug('WARNING: Abrupt exit\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
wfProfileClose();
|
wfLogProfilingData();
|
||||||
logProfilingData();
|
|
||||||
|
|
||||||
if ( !$error ) {
|
if ( !$error ) {
|
||||||
$wgLoadBalancer->closeAll();
|
$wgLoadBalancer->closeAll();
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
* @package MediaWiki
|
* @package MediaWiki
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
$wgProfiling = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $functioname name of the function we will profile
|
* @param $functioname name of the function we will profile
|
||||||
*/
|
*/
|
||||||
|
|
@ -265,7 +267,7 @@ class Profiler {
|
||||||
$this->mCalls['-overhead-total'] = $profileCount;
|
$this->mCalls['-overhead-total'] = $profileCount;
|
||||||
|
|
||||||
# Output
|
# Output
|
||||||
asort($this->mCollated, SORT_NUMERIC);
|
arsort($this->mCollated, SORT_NUMERIC);
|
||||||
foreach ($this->mCollated as $fname => $elapsed) {
|
foreach ($this->mCollated as $fname => $elapsed) {
|
||||||
$calls = $this->mCalls[$fname];
|
$calls = $this->mCalls[$fname];
|
||||||
$percent = $total ? 100. * $elapsed / $total : 0;
|
$percent = $total ? 100. * $elapsed / $total : 0;
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
* @todo document
|
* @todo document
|
||||||
* @package MediaWiki
|
* @package MediaWiki
|
||||||
*/
|
*/
|
||||||
require_once(dirname(__FILE__).'/Profiling.php');
|
require_once(dirname(__FILE__).'/Profiler.php');
|
||||||
|
|
||||||
class ProfilerSimple extends Profiler {
|
class ProfilerSimple extends Profiler {
|
||||||
function ProfilerSimple() {
|
function ProfilerSimple() {
|
||||||
|
|
@ -86,9 +86,14 @@ class ProfilerSimple extends Profiler {
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCpuTime($ru=null) {
|
function getCpuTime($ru=null) {
|
||||||
if ($ru==null)
|
if ( function_exists( getrusage() ) {
|
||||||
$ru=getrusage();
|
if ( $ru == null )
|
||||||
return ($ru['ru_utime.tv_sec']+$ru['ru_stime.tv_sec']+($ru['ru_utime.tv_usec']+$ru['ru_stime.tv_usec'])*1e-6);
|
$ru = getrusage();
|
||||||
|
return ($ru['ru_utime.tv_sec'] + $ru['ru_stime.tv_sec'] + ($ru['ru_utime.tv_usec'] +
|
||||||
|
$ru['ru_stime.tv_usec']) * 1e-6);
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If argument is passed, it assumes that it is dual-format time string, returns proper float time value */
|
/* If argument is passed, it assumes that it is dual-format time string, returns proper float time value */
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
(the one from wikipedia/udpprofile CVS )
|
(the one from wikipedia/udpprofile CVS )
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once(dirname(__FILE__).'/Profiling.php');
|
require_once(dirname(__FILE__).'/Profiler.php');
|
||||||
require_once(dirname(__FILE__).'/ProfilerSimple.php');
|
require_once(dirname(__FILE__).'/ProfilerSimple.php');
|
||||||
|
|
||||||
class ProfilerSimpleUDP extends ProfilerSimple {
|
class ProfilerSimpleUDP extends ProfilerSimple {
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,6 @@ function wfProfileOut( $fn = '' ) {
|
||||||
}
|
}
|
||||||
function wfGetProfilingOutput( $s, $e ) {}
|
function wfGetProfilingOutput( $s, $e ) {}
|
||||||
function wfProfileClose() {}
|
function wfProfileClose() {}
|
||||||
function wfLogProfilingData() {}
|
$wgProfiling = false;
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,10 @@
|
||||||
* This file is not a valid entry point, perform no further processing unless
|
* This file is not a valid entry point, perform no further processing unless
|
||||||
* MEDIAWIKI is defined
|
* MEDIAWIKI is defined
|
||||||
*/
|
*/
|
||||||
if( defined( 'MEDIAWIKI' ) ) {
|
if( !defined( 'MEDIAWIKI' ) ) {
|
||||||
|
echo "This file is part of MediaWiki, it is not a valid entry point.\n";
|
||||||
|
exit( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
# The main wiki script and things like database
|
# The main wiki script and things like database
|
||||||
# conversion and maintenance scripts all share a
|
# conversion and maintenance scripts all share a
|
||||||
|
|
@ -16,35 +19,17 @@ if( defined( 'MEDIAWIKI' ) ) {
|
||||||
# setting up a few globals.
|
# setting up a few globals.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
$fname = 'Setup.php';
|
||||||
|
wfProfileIn( $fname );
|
||||||
|
|
||||||
// Check to see if we are at the file scope
|
// Check to see if we are at the file scope
|
||||||
if ( !isset( $wgVersion ) ) {
|
if ( !isset( $wgVersion ) ) {
|
||||||
echo "Error, Setup.php must be included from the file scope, after DefaultSettings.php\n";
|
echo "Error, Setup.php must be included from the file scope, after DefaultSettings.php\n";
|
||||||
die( 1 );
|
die( 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !isset( $wgProfiling ) )
|
|
||||||
$wgProfiling = false;
|
|
||||||
|
|
||||||
require_once( "$IP/includes/AutoLoader.php" );
|
require_once( "$IP/includes/AutoLoader.php" );
|
||||||
|
|
||||||
if ( function_exists( 'wfProfileIn' ) ) {
|
|
||||||
/* nada, everything should be done already */
|
|
||||||
} elseif ( $wgProfiling and (0 == rand() % $wgProfileSampleRate ) ) {
|
|
||||||
$wgProfiling = true;
|
|
||||||
if ($wgProfilerType == "") {
|
|
||||||
$wgProfiler = new Profiler();
|
|
||||||
} else {
|
|
||||||
$prclass="Profiler{$wgProfilerType}";
|
|
||||||
require_once( $prclass.".php" );
|
|
||||||
$wgProfiler = new $prclass();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
require_once( "$IP/includes/ProfilerStub.php" );
|
|
||||||
}
|
|
||||||
|
|
||||||
$fname = 'Setup.php';
|
|
||||||
wfProfileIn( $fname );
|
|
||||||
|
|
||||||
wfProfileIn( $fname.'-exception' );
|
wfProfileIn( $fname.'-exception' );
|
||||||
require_once( "$IP/includes/Exception.php" );
|
require_once( "$IP/includes/Exception.php" );
|
||||||
wfInstallExceptionHandler();
|
wfInstallExceptionHandler();
|
||||||
|
|
@ -323,5 +308,4 @@ $wgFullyInitialised = true;
|
||||||
wfProfileOut( $fname.'-extensions' );
|
wfProfileOut( $fname.'-extensions' );
|
||||||
wfProfileOut( $fname );
|
wfProfileOut( $fname );
|
||||||
|
|
||||||
}
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
52
includes/WebStart.php
Normal file
52
includes/WebStart.php
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
# This does the initial setup for a web request. It does some security checks,
|
||||||
|
# starts the profiler and loads the configuration, and optionally loads
|
||||||
|
# Setup.php depending on whether MW_NO_SETUP is defined.
|
||||||
|
|
||||||
|
$wgRequestTime = microtime(true);
|
||||||
|
# getrusage() does not exist on the Microsoft Windows platforms, catching this
|
||||||
|
if ( function_exists ( 'getrusage' ) ) {
|
||||||
|
$wgRUstart = getrusage();
|
||||||
|
} else {
|
||||||
|
$wgRUstart = array();
|
||||||
|
}
|
||||||
|
unset( $IP );
|
||||||
|
@ini_set( 'allow_url_fopen', 0 ); # For security
|
||||||
|
|
||||||
|
if ( isset( $_REQUEST['GLOBALS'] ) ) {
|
||||||
|
die( '<a href="http://www.hardened-php.net/index.76.html">$GLOBALS overwrite vulnerability</a>');
|
||||||
|
}
|
||||||
|
|
||||||
|
# Valid web server entry point, enable includes.
|
||||||
|
# Please don't move this line to includes/Defines.php. This line essentially
|
||||||
|
# defines a valid entry point. If you put it in includes/Defines.php, then
|
||||||
|
# any script that includes it becomes an entry point, thereby defeating
|
||||||
|
# its purpose.
|
||||||
|
define( 'MEDIAWIKI', true );
|
||||||
|
|
||||||
|
# Start profiler
|
||||||
|
require_once( './StartProfiler.php' );
|
||||||
|
wfProfileIn( 'WebStart.php-conf' );
|
||||||
|
|
||||||
|
# Load up some global defines.
|
||||||
|
require_once( './includes/Defines.php' );
|
||||||
|
|
||||||
|
# LocalSettings.php is the per site customization file. If it does not exit
|
||||||
|
# the wiki installer need to be launched or the generated file moved from
|
||||||
|
# ./config/ to ./
|
||||||
|
if( !file_exists( './LocalSettings.php' ) ) {
|
||||||
|
$IP = '.';
|
||||||
|
require_once( './includes/DefaultSettings.php' ); # used for printing the version
|
||||||
|
require_once( './includes/templates/NoLocalSettings.php' );
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
# Include this site setttings
|
||||||
|
require_once( './LocalSettings.php' );
|
||||||
|
wfProfileOut( 'WebStart.php-conf' );
|
||||||
|
|
||||||
|
if ( !defined( 'MW_NO_SETUP' ) ) {
|
||||||
|
require_once( './includes/Setup.php' );
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
@ -302,8 +302,7 @@ class MediaWiki {
|
||||||
* Ends this task peacefully
|
* Ends this task peacefully
|
||||||
*/
|
*/
|
||||||
function restInPeace ( &$loadBalancer ) {
|
function restInPeace ( &$loadBalancer ) {
|
||||||
wfProfileClose();
|
wfLogProfilingData();
|
||||||
logProfilingData();
|
|
||||||
$loadBalancer->closeAll();
|
$loadBalancer->closeAll();
|
||||||
wfDebug( "Request ended normally\n" );
|
wfDebug( "Request ended normally\n" );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
80
index.php
80
index.php
|
|
@ -1,83 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Main wiki script; see docs/design.txt
|
|
||||||
* @package MediaWiki
|
|
||||||
*/
|
|
||||||
$wgRequestTime = microtime(true);
|
|
||||||
|
|
||||||
# getrusage() does not exist on the Microsoft Windows platforms, catching this
|
# Initialise common code
|
||||||
if ( function_exists ( 'getrusage' ) ) {
|
require_once( './includes/WebStart.php' );
|
||||||
$wgRUstart = getrusage();
|
|
||||||
} else {
|
|
||||||
$wgRUstart = array();
|
|
||||||
}
|
|
||||||
|
|
||||||
unset( $IP );
|
|
||||||
@ini_set( 'allow_url_fopen', 0 ); # For security...
|
|
||||||
|
|
||||||
if ( isset( $_REQUEST['GLOBALS'] ) ) {
|
|
||||||
die( '<a href="http://www.hardened-php.net/index.76.html">$GLOBALS overwrite vulnerability</a>');
|
|
||||||
}
|
|
||||||
|
|
||||||
# Valid web server entry point, enable includes.
|
|
||||||
# Please don't move this line to includes/Defines.php. This line essentially
|
|
||||||
# defines a valid entry point. If you put it in includes/Defines.php, then
|
|
||||||
# any script that includes it becomes an entry point, thereby defeating
|
|
||||||
# its purpose.
|
|
||||||
define( 'MEDIAWIKI', true );
|
|
||||||
|
|
||||||
# Load up some global defines.
|
|
||||||
require_once( './includes/Defines.php' );
|
|
||||||
|
|
||||||
# LocalSettings.php is the per site customization file. If it does not exit
|
|
||||||
# the wiki installer need to be launched or the generated file moved from
|
|
||||||
# ./config/ to ./
|
|
||||||
if( !file_exists( 'LocalSettings.php' ) ) {
|
|
||||||
$IP = '.';
|
|
||||||
require_once( 'includes/DefaultSettings.php' ); # used for printing the version
|
|
||||||
?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
||||||
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
|
|
||||||
<head>
|
|
||||||
<title>MediaWiki <?php echo $wgVersion ?></title>
|
|
||||||
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
|
|
||||||
<style type='text/css' media='screen, projection'>
|
|
||||||
html, body {
|
|
||||||
color: #000;
|
|
||||||
background-color: #fff;
|
|
||||||
font-family: sans-serif;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-size: 150%;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<img src='skins/common/images/mediawiki.png' alt='The MediaWiki logo' />
|
|
||||||
|
|
||||||
<h1>MediaWiki <?php echo $wgVersion ?></h1>
|
|
||||||
<div class='error'>
|
|
||||||
<?php
|
|
||||||
if ( file_exists( 'config/LocalSettings.php' ) ) {
|
|
||||||
echo( 'To complete the installation, move <tt>config/LocalSettings.php</tt> to the parent directory.' );
|
|
||||||
} else {
|
|
||||||
echo( 'Please <a href="config/index.php" title="setup">setup the wiki</a> first.' );
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<?php
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
|
|
||||||
# Include this site setttings
|
|
||||||
require_once( './LocalSettings.php' );
|
|
||||||
# Prepare MediaWiki
|
|
||||||
require_once( 'includes/Setup.php' );
|
|
||||||
|
|
||||||
# Initialize MediaWiki base class
|
# Initialize MediaWiki base class
|
||||||
require_once( "includes/Wiki.php" );
|
require_once( "includes/Wiki.php" );
|
||||||
|
|
|
||||||
|
|
@ -46,14 +46,8 @@
|
||||||
|
|
||||||
$wgDBadminuser = $wgDBadminpassword = $wgDBserver = $wgDBname = $wgEnableProfileInfo = false;
|
$wgDBadminuser = $wgDBadminpassword = $wgDBserver = $wgDBname = $wgEnableProfileInfo = false;
|
||||||
|
|
||||||
define("MEDIAWIKI", 1);
|
define( 'MW_NO_SETUP', 1 );
|
||||||
if ( isset( $_REQUEST['GLOBALS'] ) ) {
|
require_once( './includes/WebStart.php' );
|
||||||
echo '<a href="http://www.hardened-php.net/index.76.html">$GLOBALS overwrite vulnerability</a>';
|
|
||||||
die( -1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
require_once("./includes/Defines.php");
|
|
||||||
require_once("./LocalSettings.php");
|
|
||||||
require_once("./AdminSettings.php");
|
require_once("./AdminSettings.php");
|
||||||
|
|
||||||
if (!$wgEnableProfileInfo) {
|
if (!$wgEnableProfileInfo) {
|
||||||
|
|
|
||||||
13
redirect.php
13
redirect.php
|
|
@ -1,15 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
unset( $DP );
|
define( 'MW_NO_SETUP', 1 );
|
||||||
unset( $IP );
|
require_once( './includes/WebStart.php' );
|
||||||
$wgCommandLineMode = false;
|
|
||||||
define( 'MEDIAWIKI', true );
|
|
||||||
if ( isset( $_REQUEST['GLOBALS'] ) ) {
|
|
||||||
echo '<a href="http://www.hardened-php.net/index.76.html">$GLOBALS overwrite vulnerability</a>';
|
|
||||||
die( -1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
require_once( './includes/Defines.php' );
|
|
||||||
require_once( './LocalSettings.php' );
|
|
||||||
global $wgArticlePath;
|
global $wgArticlePath;
|
||||||
|
|
||||||
require_once( 'includes/WebRequest.php' );
|
require_once( 'includes/WebRequest.php' );
|
||||||
|
|
|
||||||
23
thumb.php
23
thumb.php
|
|
@ -4,18 +4,10 @@
|
||||||
* PHP script to stream out an image thumbnail.
|
* PHP script to stream out an image thumbnail.
|
||||||
* If the file exists, we make do with abridged MediaWiki initialisation.
|
* If the file exists, we make do with abridged MediaWiki initialisation.
|
||||||
*/
|
*/
|
||||||
|
define( 'MW_NO_SETUP', 1 );
|
||||||
define( 'MEDIAWIKI', true );
|
require_once( './includes/WebStart.php' );
|
||||||
unset( $IP );
|
wfProfileIn( 'thumb.php' );
|
||||||
if ( isset( $_REQUEST['GLOBALS'] ) ) {
|
wfProfileIn( 'thumb.php-start' );
|
||||||
echo '<a href="http://www.hardened-php.net/index.76.html">$GLOBALS overwrite vulnerability</a>';
|
|
||||||
die( -1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
define( 'MW_NO_OUTPUT_BUFFER', true );
|
|
||||||
|
|
||||||
require_once( './includes/Defines.php' );
|
|
||||||
require_once( './LocalSettings.php' );
|
|
||||||
require_once( 'GlobalFunctions.php' );
|
require_once( 'GlobalFunctions.php' );
|
||||||
require_once( 'ImageFunctions.php' );
|
require_once( 'ImageFunctions.php' );
|
||||||
|
|
||||||
|
|
@ -52,12 +44,14 @@ $thumbPath = wfImageThumbDir( $fileName ) . '/' . $thumbName;
|
||||||
|
|
||||||
if ( is_file( $thumbPath ) && filemtime( $thumbPath ) >= filemtime( $imagePath ) ) {
|
if ( is_file( $thumbPath ) && filemtime( $thumbPath ) >= filemtime( $imagePath ) ) {
|
||||||
wfStreamFile( $thumbPath );
|
wfStreamFile( $thumbPath );
|
||||||
|
// Can't log profiling data with no Setup.php
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// OK, no valid thumbnail, time to get out the heavy machinery
|
// OK, no valid thumbnail, time to get out the heavy machinery
|
||||||
|
wfProfileOut( 'thumb.php-start' );
|
||||||
require_once( 'Setup.php' );
|
require_once( 'Setup.php' );
|
||||||
wfProfileIn( 'thumb.php' );
|
wfProfileIn( 'thumb.php-render' );
|
||||||
|
|
||||||
$img = Image::newFromName( $fileName );
|
$img = Image::newFromName( $fileName );
|
||||||
if ( $img ) {
|
if ( $img ) {
|
||||||
|
|
@ -79,7 +73,8 @@ if ( $thumb && $thumb->path ) {
|
||||||
</body></html>";
|
</body></html>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wfProfileOut( 'thumb.php-render' );
|
||||||
wfProfileOut( 'thumb.php' );
|
wfProfileOut( 'thumb.php' );
|
||||||
|
wfLogProfilingData();
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -4,21 +4,7 @@
|
||||||
* @package MediaWiki
|
* @package MediaWiki
|
||||||
* @subpackage SpecialPage
|
* @subpackage SpecialPage
|
||||||
*/
|
*/
|
||||||
|
require_once( './includes/WebStart.php' );
|
||||||
unset($IP);
|
|
||||||
define('MEDIAWIKI', true);
|
|
||||||
if ( isset( $_REQUEST['GLOBALS'] ) ) {
|
|
||||||
echo '<a href="http://www.hardened-php.net/index.76.html">$GLOBALS overwrite vulnerability</a>';
|
|
||||||
die( -1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
require_once('./includes/Defines.php');
|
|
||||||
|
|
||||||
if (!file_exists('LocalSettings.php'))
|
|
||||||
exit;
|
|
||||||
|
|
||||||
require_once('./LocalSettings.php');
|
|
||||||
require_once('includes/Setup.php');
|
|
||||||
|
|
||||||
require_once('DatabaseFunctions.php');
|
require_once('DatabaseFunctions.php');
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue