Index: includes/templates/NoLocalSettings.php =================================================================== --- includes/templates/NoLocalSettings.php (revision 40940) +++ includes/templates/NoLocalSettings.php (working copy) @@ -10,17 +10,32 @@ } else { $wgVersion = 'VERSION'; } -# Set the path in case we hit a page such as /index.php/Main_Page -# Could use but then we have to worry about http[s]/port #/etc. -$ext = strpos( $_SERVER['SCRIPT_NAME'], 'index.php5' ) === false ? 'php' : 'php5'; + +$scriptName = $_SERVER['SCRIPT_NAME']; +$ext = substr( $scriptName, strpos( $scriptName, "." ) + 1 ); $path = ''; -if( isset( $_SERVER['SCRIPT_NAME'] )) { - $path = htmlspecialchars( preg_replace('/index.php5?/', '', $_SERVER['SCRIPT_NAME']) ); +# Add any directories in the main folder that could contain an entrypoint (even possibly). +# We can't just do a dir listing here, as we don't know where it is yet +# These must not also be the names of subfolders that may contain an entrypoint +$topdirs = array( 'extensions', 'includes' ); +foreach( $topdirs as $dir ){ + # Check whether a directory by this name is in the path + if( strrpos( $scriptName, "/" . $dir . "/" ) ){ + # If so, check whether it is the right folder + # First, get the number of directories up it is (to generate path) + $numToGoUp = substr_count( substr( $scriptName, strrpos( $scriptName, "/" . $dir . "/" ) + 1 ), "/" ); + # And generate the path using ..'s + for( $i = 0; $i < $numToGoUp; $i++ ){ + $realPath = "../" . $realPath; + } + # Checking existance (using the image here as it's something not likely to change, and to always be here) + if( file_exists( $realPath . "skins/common/images/mediawiki.png" ) ) { + # If so, get the path that we can use in this file, and stop looking + $path = substr( $scriptName, 0, strrpos( $scriptName, "/" . $dir . "/" ) + 1 ); + break; + } + } } -#Remove filename in path, prevents going to corrupt URLs (e.g. http://server/path/api.phpconfig/index.php) -if(substr($path, strlen($path)-1) != "/"){ - $path = substr($path, 0, strrpos($path, "/")+1); -} ?>