X-Git-Url: https://git.cyclocoop.org/%242?a=blobdiff_plain;f=config%2Findex.php;h=d913bbb1e8afa811d793a344d213187b25b55b42;hb=83001e90f1d7b6659b6bf6d269646172df1ebafc;hp=3bf95c11d532347692387f7709c87d8cf49237ba;hpb=921fb9eb40da1a063e08429cb25a96ff83622d8e;p=lhc%2Fweb%2Fwiklou.git diff --git a/config/index.php b/config/index.php index 3bf95c11d5..d913bbb1e8 100644 --- a/config/index.php +++ b/config/index.php @@ -19,13 +19,6 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # http://www.gnu.org/copyleft/gpl.html -error_reporting( E_ALL ); -header( "Content-type: text/html; charset=utf-8" ); -@ini_set( "display_errors", true ); - -# In case of errors, let output be clean. -$wgRequestTime = microtime( true ); - # Attempt to set up the include path, to fix problems with relative includes $IP = dirname( dirname( __FILE__ ) ); define( 'MW_INSTALL_PATH', $IP ); @@ -34,1914 +27,17 @@ define( 'MW_INSTALL_PATH', $IP ); define( "MEDIAWIKI", true ); define( "MEDIAWIKI_INSTALL", true ); -// Run version checks before including other files -// so people don't see a scary parse error. -require_once( "$IP/install-utils.inc" ); -install_version_checks(); - -require_once( "$IP/includes/Defines.php" ); -require_once( "$IP/includes/DefaultSettings.php" ); -require_once( "$IP/includes/AutoLoader.php" ); -require_once( "$IP/includes/MagicWord.php" ); -require_once( "$IP/includes/Namespace.php" ); -require_once( "$IP/includes/ProfilerStub.php" ); -require_once( "$IP/includes/GlobalFunctions.php" ); -require_once( "$IP/includes/Hooks.php" ); - -# If we get an exception, the user needs to know -# all the details -$wgShowExceptionDetails = true; - -## Databases we support: - -$ourdb = array(); -$ourdb['mysql']['fullname'] = 'MySQL'; -$ourdb['mysql']['havedriver'] = 0; -$ourdb['mysql']['compile'] = 'mysql'; -$ourdb['mysql']['bgcolor'] = '#ffe5a7'; -$ourdb['mysql']['rootuser'] = 'root'; - -$ourdb['postgres']['fullname'] = 'PostgreSQL'; -$ourdb['postgres']['havedriver'] = 0; -$ourdb['postgres']['compile'] = 'pgsql'; -$ourdb['postgres']['bgcolor'] = '#aaccff'; -$ourdb['postgres']['rootuser'] = 'postgres'; - -$ourdb['sqlite']['fullname'] = 'SQLite'; -$ourdb['sqlite']['havedriver'] = 0; -$ourdb['sqlite']['compile'] = 'pdo_sqlite'; -$ourdb['sqlite']['bgcolor'] = '#b1ebb1'; -$ourdb['sqlite']['rootuser'] = 'root'; - -?> - - - - - MediaWiki <?php echo( $wgVersion ); ?> Installation - - - - - -
-
-
-
- -

MediaWiki Installation

- -Setup has completed, your wiki is configured.

- -

Please delete the /config directory for extra security.

" ); -} - -if( file_exists( "./LocalSettings.php" ) ) { - writeSuccessMessage(); - - dieout( '' ); -} - -if( !is_writable( "." ) ) { - dieout( "

Can't write config file, aborting

- -

In order to configure the wiki you have to make the config subdirectory - writable by the web server. Once configuration is done you'll move the created - LocalSettings.php to the parent directory, and for added safety you can - then remove the config subdirectory entirely.

- -

To make the directory writable on a Unix/Linux system:

- -
-	cd /path/to/wiki
-	chmod a+w config
-	
- -

Afterwards retry to start the setup.

" ); -} - - -require_once( "$IP/install-utils.inc" ); -require_once( "$IP/maintenance/updaters.inc" ); - -class ConfigData { - function getEncoded( $data ) { - # removing latin1 support, no need... - return $data; - } - function getSitename() { return $this->getEncoded( $this->Sitename ); } - function getSysopName() { return $this->getEncoded( $this->SysopName ); } - function getSysopPass() { return $this->getEncoded( $this->SysopPass ); } - - function setSchema( $schema, $engine ) { - $this->DBschema = $schema; - if ( !preg_match( '/^\w*$/', $engine ) ){ - $engine = 'InnoDB'; - } - switch ( $this->DBschema ) { - case 'mysql5': - $this->DBTableOptions = "ENGINE=$engine, DEFAULT CHARSET=utf8"; - $this->DBmysql5 = 'true'; - break; - case 'mysql5-binary': - $this->DBTableOptions = "ENGINE=$engine, DEFAULT CHARSET=binary"; - $this->DBmysql5 = 'true'; - break; - default: - $this->DBTableOptions = "TYPE=$engine"; - $this->DBmysql5 = 'false'; - } - $this->DBengine = $engine; - - # Set the global for use during install - global $wgDBTableOptions; - $wgDBTableOptions = $this->DBTableOptions; - } -} - -?> - - - - -

Checking environment...

-

Please include all of the lines below when reporting installation problems.

-" ); -} - -print "
  • Found database drivers for:"; -$DefaultDBtype = ''; -foreach (array_keys($ourdb) AS $db) { - if ($ourdb[$db]['havedriver']) { - if ( $DefaultDBtype == '' ) { - $DefaultDBtype = $db; - } - print " ".$ourdb[$db]['fullname']; - } -} -print "
  • \n"; - -if( wfIniGetBool( "register_globals" ) ) { - ?> -
  • -
    - Warning: - PHP's register_globals option is enabled. Disable it if you can. -
    - MediaWiki will work, but your server is more exposed to PHP-based security vulnerabilities. -
  • -
  • Fatal: magic_quotes_runtime is active! - This option corrupts data input unpredictably; you cannot install or use - MediaWiki unless this option is disabled. -
  • Fatal: magic_quotes_sybase is active! - This option corrupts data input unpredictably; you cannot install or use - MediaWiki unless this option is disabled. -
  • Fatal: mbstring.func_overload is active! - This option causes errors and may corrupt data unpredictably; - you cannot install or use MediaWiki unless this option is disabled. -
  • Fatal: zend.ze1_compatibility_mode is active! - This option causes horrible bugs with MediaWiki; you cannot install or use - MediaWiki unless this option is disabled. -

    Cannot install MediaWiki.

    " ); -} - -if( wfIniGetBool( "safe_mode" ) ) { - $conf->safeMode = true; - ?> -
  • Warning: PHP's - safe mode is active. - You may have problems caused by this, particularly if using image uploads. -
  • - safeMode = false; -} - -$sapi = php_sapi_name(); -print "
  • PHP server API is $sapi; "; -$script = defined('MW_INSTALL_PHP5_EXT') ? 'index.php5' : 'index.php'; -if( $wgUsePathInfo ) { - print "ok, using pretty URLs ($script/Page_Title)"; -} else { - print "using ugly URLs ($script?title=Page_Title)"; +# Check for PHP 5 +if ( !function_exists( 'version_compare' ) + || version_compare( phpversion(), '5.0.0' ) < 0 +) { + define( 'MW_PHP4', '1' ); + require( "$IP/includes/DefaultSettings.php" ); + require( "$IP/includes/templates/PHP4.php" ); + exit; } -print "
  • \n"; - -$conf->xml = function_exists( "utf8_encode" ); -if( $conf->xml ) { - print "
  • Have XML / Latin1-UTF-8 conversion support.
  • \n"; -} else { - dieout( "PHP's XML module is missing; the wiki requires functions in - this module and won't work in this configuration. - If you're running Mandrake, install the php-xml package." ); -} - -# Check for session support -if( !function_exists( 'session_name' ) ) - dieout( "PHP's session module is missing. MediaWiki requires session support in order to function." ); - -# session.save_path doesn't *have* to be set, but if it is, and it's -# not valid/writable/etc. then it can cause problems -$sessionSavePath = mw_get_session_save_path(); -$ssp = htmlspecialchars( $sessionSavePath ); -# Warn the user if it's not set, but let them proceed -if( !$sessionSavePath ) { - print "
  • Warning: A value for session.save_path - has not been set in PHP.ini. If the default value causes problems with - saving session data, set it to a valid path which is read/write/execute - for the user your web server is running under.
  • "; -} elseif ( is_dir( $sessionSavePath ) && is_writable( $sessionSavePath ) ) { - # All good? Let the user know - print "
  • Session save path ({$ssp}) appears to be valid.
  • "; -} else { - # Something not right? Warn the user, but let them proceed - print "
  • Warning: Your session.save_path value ({$ssp}) - appears to be invalid or is not writable. PHP needs to be able to save data to - this location for correct session operation.
  • "; -} - -# Check for PCRE support -if( !function_exists( 'preg_match' ) ) - dieout( "The PCRE support module appears to be missing. MediaWiki requires the - Perl-compatible regular expression functions." ); - -$memlimit = ini_get( "memory_limit" ); -$conf->raiseMemory = false; -if( empty( $memlimit ) || $memlimit == -1 ) { - print "
  • PHP is configured with no memory_limit.
  • \n"; -} else { - print "
  • PHP's memory_limit is " . htmlspecialchars( $memlimit ) . ". "; - $n = intval( $memlimit ); - if( preg_match( '/^([0-9]+)[Mm]$/', trim( $memlimit ), $m ) ) { - $n = intval( $m[1] * (1024*1024) ); - } - if( $n < 20*1024*1024 ) { - print "Attempting to raise limit to 20M... "; - if( false === ini_set( "memory_limit", "20M" ) ) { - print "failed.
    " . htmlspecialchars( $memlimit ) . " seems too low, installation may fail!"; - } else { - $conf->raiseMemory = true; - print "ok."; - } - } - print "
  • \n"; -} - -$conf->turck = function_exists( 'mmcache_get' ); -if ( $conf->turck ) { - print "
  • Turck MMCache installed
  • \n"; -} - -$conf->xcache = function_exists( 'xcache_get' ); -if( $conf->xcache ) - print "
  • XCache installed
  • "; - -$conf->apc = function_exists('apc_fetch'); -if ($conf->apc ) { - print "
  • APC installed
  • "; -} - -$conf->eaccel = function_exists( 'eaccelerator_get' ); -if ( $conf->eaccel ) { - $conf->turck = 'eaccelerator'; - print "
  • eAccelerator installed
  • \n"; -} - -$conf->dba = function_exists( 'dba_open' ); - -if( !( $conf->turck || $conf->eaccel || $conf->apc || $conf->xcache ) ) { - echo( '
  • Couldn\'t find Turck MMCache, - eAccelerator, - APC or XCache; - cannot use these for object caching.
  • ' ); -} - -$conf->diff3 = false; -$diff3locations = array_merge( - array( - "/usr/bin", - "/usr/local/bin", - "/opt/csw/bin", - "/usr/gnu/bin", - "/usr/sfw/bin" ), - explode( PATH_SEPARATOR, getenv( "PATH" ) ) ); -$diff3names = array( "gdiff3", "diff3", "diff3.exe" ); - -$diff3versioninfo = array( '$1 --version 2>&1', 'diff3 (GNU diffutils)' ); -foreach ($diff3locations as $loc) { - $exe = locate_executable($loc, $diff3names, $diff3versioninfo); - if ($exe !== false) { - $conf->diff3 = $exe; - break; - } -} - -if ($conf->diff3) - print "
  • Found GNU diff3: $conf->diff3.
  • "; -else - print "
  • GNU diff3 not found.
  • "; - -$conf->ImageMagick = false; -$imcheck = array( "/usr/bin", "/opt/csw/bin", "/usr/local/bin", "/sw/bin", "/opt/local/bin" ); -foreach( $imcheck as $dir ) { - $im = "$dir/convert"; - if( @file_exists( $im ) ) { - print "
  • Found ImageMagick: $im; image thumbnailing will be enabled if you enable uploads.
  • \n"; - $conf->ImageMagick = $im; - break; - } -} - -$conf->HaveGD = function_exists( "imagejpeg" ); -if( $conf->HaveGD ) { - print "
  • Found GD graphics library built-in"; - if( !$conf->ImageMagick ) { - print ", image thumbnailing will be enabled if you enable uploads"; - } - print ".
  • \n"; -} else { - if( !$conf->ImageMagick ) { - print "
  • Couldn't find GD library or ImageMagick; image thumbnailing disabled.
  • \n"; - } -} - -$conf->IP = dirname( dirname( __FILE__ ) ); -print "
  • Installation directory: " . htmlspecialchars( $conf->IP ) . "
  • \n"; - - -// PHP_SELF isn't available sometimes, such as when PHP is CGI but -// cgi.fix_pathinfo is disabled. In that case, fall back to SCRIPT_NAME -// to get the path to the current script... hopefully it's reliable. SIGH -$path = ($_SERVER["PHP_SELF"] === '') - ? $_SERVER["SCRIPT_NAME"] - : $_SERVER["PHP_SELF"]; - -$conf->ScriptPath = preg_replace( '{^(.*)/config.*$}', '$1', $path ); -print "
  • Script URI path: " . htmlspecialchars( $conf->ScriptPath ) . "
  • \n"; - - - -// We may be installing from *.php5 extension file, if so, print message -$conf->ScriptExtension = '.php'; -if (defined('MW_INSTALL_PHP5_EXT')) { - $conf->ScriptExtension = '.php5'; - print "
  • Installing MediaWiki with php5 file extensions
  • \n"; -} else { - print "
  • Installing MediaWiki with php file extensions
  • \n"; -} - - -print "
  • Environment checked. You can install MediaWiki.
  • \n"; - $conf->posted = ($_SERVER["REQUEST_METHOD"] == "POST"); - - $conf->Sitename = ucfirst( importPost( "Sitename", "" ) ); - $defaultEmail = empty( $_SERVER["SERVER_ADMIN"] ) - ? 'root@localhost' - : $_SERVER["SERVER_ADMIN"]; - $conf->EmergencyContact = importPost( "EmergencyContact", $defaultEmail ); - $conf->DBtype = importPost( "DBtype", $DefaultDBtype ); -?> - -DBserver = importPost( "DBserver", "localhost" ); - $conf->DBname = importPost( "DBname", "wikidb" ); - $conf->DBuser = importPost( "DBuser", "wikiuser" ); - $conf->DBpassword = importPost( "DBpassword" ); - $conf->DBpassword2 = importPost( "DBpassword2" ); - $conf->SysopName = importPost( "SysopName", "WikiSysop" ); - $conf->SysopPass = importPost( "SysopPass" ); - $conf->SysopPass2 = importPost( "SysopPass2" ); - $conf->RootUser = importPost( "RootUser", "root" ); - $conf->RootPW = importPost( "RootPW", "" ); - $useRoot = importCheck( 'useroot', false ); - $conf->LanguageCode = importPost( "LanguageCode", "en" ); - - ## MySQL specific: - $conf->DBprefix = importPost( "DBprefix" ); - $conf->setSchema( - importPost( "DBschema", "mysql4" ), - importPost( "DBengine", "InnoDB" ) ); - - ## Postgres specific: - $conf->DBport = importPost( "DBport", "5432" ); - $conf->DBmwschema = importPost( "DBmwschema", "mediawiki" ); - $conf->DBts2schema = importPost( "DBts2schema", "public" ); - -/* Check for validity */ -$errs = array(); - -if( preg_match( '/^$|^mediawiki$|#/i', $conf->Sitename ) ) { - $errs["Sitename"] = "Must not be blank or \"MediaWiki\" and may not contain \"#\""; -} -if( $conf->DBuser == "" ) { - $errs["DBuser"] = "Must not be blank"; -} -if( ($conf->DBtype == 'mysql') && (strlen($conf->DBuser) > 16) ) { - $errs["DBuser"] = "Username too long"; -} -if( $conf->DBpassword == "" && $conf->DBtype != "postgres" ) { - $errs["DBpassword"] = "Must not be blank"; -} -if( $conf->DBpassword != $conf->DBpassword2 ) { - $errs["DBpassword2"] = "Passwords don't match!"; -} -if( !preg_match( '/^[A-Za-z_0-9]*$/', $conf->DBprefix ) ) { - $errs["DBprefix"] = "Invalid table prefix"; -} - -error_reporting( E_ALL ); - -/** - * Initialise $wgLang and $wgContLang to something so we can - * call case-folding methods. Per Brion, this is English for - * now, although we could be clever and initialise to the - * user-selected language. - */ -$wgContLang = Language::factory( 'en' ); -$wgLang = $wgContLang; - -/** - * We're messing about with users, so we need a stub - * authentication plugin... - */ -$wgAuth = new AuthPlugin(); - -/** - * Validate the initial administrator account; username, - * password checks, etc. - */ -if( $conf->SysopName ) { - # Check that the user can be created - $u = User::newFromName( $conf->SysopName ); - if( is_a($u, 'User') ) { // please do not use instanceof, it breaks PHP4 - # Various password checks - if( $conf->SysopPass != '' ) { - if( $conf->SysopPass == $conf->SysopPass2 ) { - if( !$u->isValidPassword( $conf->SysopPass ) ) { - $errs['SysopPass'] = "Bad password"; - } - } else { - $errs['SysopPass2'] = "Passwords don't match"; - } - } else { - $errs['SysopPass'] = "Cannot be blank"; - } - unset( $u ); - } else { - $errs['SysopName'] = "Bad username"; - } -} - -$conf->License = importRequest( "License", "none" ); -if( $conf->License == "gfdl" ) { - $conf->RightsUrl = "http://www.gnu.org/copyleft/fdl.html"; - $conf->RightsText = "GNU Free Documentation License 1.2"; - $conf->RightsCode = "gfdl"; - $conf->RightsIcon = '${wgScriptPath}/skins/common/images/gnu-fdl.png'; -} elseif( $conf->License == "none" ) { - $conf->RightsUrl = $conf->RightsText = $conf->RightsCode = $conf->RightsIcon = ""; -} else { - $conf->RightsUrl = importRequest( "RightsUrl", "" ); - $conf->RightsText = importRequest( "RightsText", "" ); - $conf->RightsCode = importRequest( "RightsCode", "" ); - $conf->RightsIcon = importRequest( "RightsIcon", "" ); -} - -$conf->Shm = importRequest( "Shm", "none" ); -$conf->MCServers = importRequest( "MCServers" ); - -/* Test memcached servers */ - -if ( $conf->Shm == 'memcached' && $conf->MCServers ) { - $conf->MCServerArray = array_map( 'trim', explode( ',', $conf->MCServers ) ); - foreach ( $conf->MCServerArray as $server ) { - $error = testMemcachedServer( $server ); - if ( $error ) { - $errs["MCServers"] = $error; - break; - } - } -} else if ( $conf->Shm == 'memcached' ) { - $errs["MCServers"] = "Please specify at least one server if you wish to use memcached"; -} - -/* default values for installation */ -$conf->Email = importRequest("Email", "email_enabled"); -$conf->Emailuser = importRequest("Emailuser", "emailuser_enabled"); -$conf->Enotif = importRequest("Enotif", "enotif_allpages"); -$conf->Eauthent = importRequest("Eauthent", "eauthent_enabled"); - -if( $conf->posted && ( 0 == count( $errs ) ) ) { - do { /* So we can 'continue' to end prematurely */ - $conf->Root = ($conf->RootPW != ""); - - /* Load up the settings and get installin' */ - $local = writeLocalSettings( $conf ); - echo "
  • \n"; - echo "

    Generating configuration file...

    \n"; - echo "
  • \n"; - - $wgCommandLineMode = false; - chdir( ".." ); - $ok = eval( $local ); - if( $ok === false ) { - dieout( "Errors in generated configuration; " . - "most likely due to a bug in the installer... " . - "Config file was: " . - "
    " .
    -				htmlspecialchars( $local ) .
    -				"
    " . - "" ); - } - $conf->DBtypename = ''; - foreach (array_keys($ourdb) as $db) { - if ($conf->DBtype === $db) - $conf->DBtypename = $ourdb[$db]['fullname']; - } - if ( ! strlen($conf->DBtype)) { - $errs["DBpicktype"] = "Please choose a database type"; - continue; - } - - if (! $conf->DBtypename) { - $errs["DBtype"] = "Unknown database type '$conf->DBtype'"; - continue; - } - print "
  • Database type: {$conf->DBtypename}
  • \n"; - $dbclass = 'Database'.ucfirst($conf->DBtype); - $wgDBtype = $conf->DBtype; - $wgDBadminuser = "root"; - $wgDBadminpassword = $conf->RootPW; - - ## Mysql specific: - $wgDBprefix = $conf->DBprefix; - - ## Postgres specific: - $wgDBport = $conf->DBport; - $wgDBmwschema = $conf->DBmwschema; - $wgDBts2schema = $conf->DBts2schema; - - $wgCommandLineMode = true; - if (! defined ( 'STDERR' ) ) - define( 'STDERR', fopen("php://stderr", "wb")); - $wgUseDatabaseMessages = false; /* FIXME: For database failure */ - require_once( "$IP/includes/Setup.php" ); - chdir( "config" ); - - $wgTitle = Title::newFromText( "Installation script" ); - error_reporting( E_ALL ); - print "
  • Loading class: $dbclass"; - $dbc = new $dbclass; - - if( $conf->DBtype == 'mysql' ) { - $mysqlOldClient = version_compare( mysql_get_client_info(), "4.1.0", "lt" ); - if( $mysqlOldClient ) { - print "
  • PHP is linked with old MySQL client libraries. If you are - using a MySQL 4.1 server and have problems connecting to the database, - see http://dev.mysql.com/doc/mysql/en/old-client.html for help.
  • \n"; - } - $ok = true; # Let's be optimistic - - # Decide if we're going to use the superuser or the regular database user - $conf->Root = $useRoot; - if( $conf->Root ) { - $db_user = $conf->RootUser; - $db_pass = $conf->RootPW; - } else { - $db_user = $wgDBuser; - $db_pass = $wgDBpassword; - } - - # Attempt to connect - echo( "
  • Attempting to connect to database server as $db_user..." ); - $wgDatabase = Database::newFromParams( $wgDBserver, $db_user, $db_pass, '', 1 ); - - # Check the connection and respond to errors - if( $wgDatabase->isOpen() ) { - # Seems OK - $ok = true; - $wgDBadminuser = $db_user; - $wgDBadminpassword = $db_pass; - echo( "success.
  • \n" ); - $wgDatabase->ignoreErrors( true ); - $myver = $wgDatabase->getServerVersion(); - } else { - # There were errors, report them and back out - $ok = false; - $errno = mysql_errno(); - $errtx = htmlspecialchars( mysql_error() ); - switch( $errno ) { - case 1045: - case 2000: - echo( "failed due to authentication errors. Check passwords." ); - if( $conf->Root ) { - # The superuser details are wrong - $errs["RootUser"] = "Check username"; - $errs["RootPW"] = "and password"; - } else { - # The regular user details are wrong - $errs["DBuser"] = "Check username"; - $errs["DBpassword"] = "and password"; - } - break; - case 2002: - case 2003: - default: - # General connection problem - echo( "failed with error [$errno] $errtx.\n" ); - $errs["DBserver"] = "Connection failed"; - break; - } # switch - } #conn. att. - - if( !$ok ) { continue; } - - } else { # not mysql - error_reporting( E_ALL ); - $wgSuperUser = ''; - ## Possible connect as a superuser - if( $useRoot && $conf->DBtype != 'sqlite' ) { - $wgDBsuperuser = $conf->RootUser; - echo( "
  • Attempting to connect to database \"postgres\" as superuser \"$wgDBsuperuser\"..." ); - $wgDatabase = $dbc->newFromParams($wgDBserver, $wgDBsuperuser, $conf->RootPW, "postgres", 1); - if (!$wgDatabase->isOpen()) { - print " error: " . $wgDatabase->lastError() . "
  • \n"; - $errs["DBserver"] = "Could not connect to database as superuser"; - $errs["RootUser"] = "Check username"; - $errs["RootPW"] = "and password"; - continue; - } - $wgDatabase->initial_setup($conf->RootPW, 'postgres'); - } - echo( "
  • Attempting to connect to database \"$wgDBname\" as \"$wgDBuser\"..." ); - $wgDatabase = $dbc->newFromParams($wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname, 1); - if (!$wgDatabase->isOpen()) { - print " error: " . $wgDatabase->lastError() . "
  • \n"; - } else { - $myver = $wgDatabase->getServerVersion(); - } - if (is_callable(array($wgDatabase, 'initial_setup'))) $wgDatabase->initial_setup('', $wgDBname); - } - - if ( !$wgDatabase->isOpen() ) { - $errs["DBserver"] = "Couldn't connect to database"; - continue; - } - - print "
  • Connected to $myver"; - if ($conf->DBtype == 'mysql') { - if( version_compare( $myver, "4.0.14" ) < 0 ) { - dieout( " -- mysql 4.0.14 or later required. Aborting." ); - } - $mysqlNewAuth = version_compare( $myver, "4.1.0", "ge" ); - if( $mysqlNewAuth && $mysqlOldClient ) { - print "; You are using MySQL 4.1 server, but PHP is linked - to old client libraries; if you have trouble with authentication, see - http://dev.mysql.com/doc/mysql/en/old-client.html for help."; - } - if( $wgDBmysql5 ) { - if( $mysqlNewAuth ) { - print "; enabling MySQL 4.1/5.0 charset mode"; - } else { - print "; MySQL 4.1/5.0 charset mode enabled, - but older version detected; will likely fail."; - } - } - print "
  • \n"; - - @$sel = $wgDatabase->selectDB( $wgDBname ); - if( $sel ) { - print "
  • Database " . htmlspecialchars( $wgDBname ) . " exists
  • \n"; - } else { - $err = mysql_errno(); - $databaseSafe = htmlspecialchars( $wgDBname ); - if( $err == 1102 /* Invalid database name */ ) { - print ""; - continue; - } elseif( $err != 1049 /* Database doesn't exist */ ) { - print ""; - continue; - } - print "
  • Attempting to create database...
  • "; - $res = $wgDatabase->query( "CREATE DATABASE `$wgDBname`" ); - if( !$res ) { - print "
  • Couldn't create database " . - htmlspecialchars( $wgDBname ) . - "; try with root access or check your username/pass.
  • \n"; - $errs["RootPW"] = "<- Enter"; - continue; - } - print "
  • Created database " . htmlspecialchars( $wgDBname ) . "
  • \n"; - } - $wgDatabase->selectDB( $wgDBname ); - } - else if ($conf->DBtype == 'postgres') { - if( version_compare( $myver, "PostgreSQL 8.0" ) < 0 ) { - dieout( " Postgres 8.0 or later is required. Aborting." ); - } - } - - if( $wgDatabase->tableExists( "cur" ) || $wgDatabase->tableExists( "revision" ) ) { - print "
  • There are already MediaWiki tables in this database. Checking if updates are needed...
  • \n"; - - if ( $conf->DBtype == 'mysql') { - # Determine existing default character set - if ( $wgDatabase->tableExists( "revision" ) ) { - $revision = $wgDatabase->escapeLike( $conf->DBprefix . 'revision' ); - $res = $wgDatabase->query( "SHOW TABLE STATUS LIKE '$revision'" ); - $row = $wgDatabase->fetchObject( $res ); - if ( !$row ) { - echo "
  • SHOW TABLE STATUS query failed!
  • \n"; - $existingSchema = false; - $existingEngine = false; - } else { - if ( preg_match( '/^latin1/', $row->Collation ) ) { - $existingSchema = 'mysql4'; - } elseif ( preg_match( '/^utf8/', $row->Collation ) ) { - $existingSchema = 'mysql5'; - } elseif ( preg_match( '/^binary/', $row->Collation ) ) { - $existingSchema = 'mysql5-binary'; - } else { - $existingSchema = false; - echo "
  • Warning: Unrecognised existing collation
  • \n"; - } - if ( isset( $row->Engine ) ) { - $existingEngine = $row->Engine; - } else { - $existingEngine = $row->Type; - } - } - if ( $existingSchema && $existingSchema != $conf->DBschema ) { - print "
  • Warning: you requested the {$conf->DBschema} schema, " . - "but the existing database has the $existingSchema schema. This upgrade script ". - "can't convert it, so it will remain $existingSchema.
  • \n"; - $conf->setSchema( $existingSchema, $conf->DBengine ); - } - if ( $existingEngine && $existingEngine != $conf->DBengine ) { - print "
  • Warning: you requested the {$conf->DBengine} storage " . - "engine, but the existing database uses the $existingEngine engine. This upgrade " . - "script can't convert it, so it will remain $existingEngine.
  • \n"; - $conf->setSchema( $conf->DBschema, $existingEngine ); - } - } - - # Create user if required - if ( $conf->Root ) { - $conn = $dbc->newFromParams( $wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname, 1 ); - if ( $conn->isOpen() ) { - print "
  • DB user account ok
  • \n"; - $conn->close(); - } else { - print "
  • Granting user permissions..."; - if( $mysqlOldClient && $mysqlNewAuth ) { - print " If the next step fails, see http://dev.mysql.com/doc/mysql/en/old-client.html for help."; - } - print "
  • \n"; - dbsource( "../maintenance/users.sql", $wgDatabase ); - } - } - } - print "
    \n";
    -			chdir( ".." );
    -			flush();
    -			do_all_updates();
    -			chdir( "config" );
    -			print "
    \n"; - print "
    \n"; - writeSuccessMessage(); - } else { - fclose( $f ); - die("

    An error occured while writing the config/LocalSettings.php file. Check user rights and disk space then try again.

    \n"); - print "\n"; - } - - } while( false ); -} -?> - - - -posted ) { - echo "

    Something's not quite right yet; make sure everything below is filled out correctly.

    \n"; - } -?> - -
    - - -

    Site config

    - -
    -
    - -
    -

    - Preferably a short word without punctuation, i.e. "Wikipedia".
    - Will appear as the namespace name for "meta" pages, and throughout the interface. -

    - -
    - -
    -

    - Displayed to users in some error messages, used as the return address for password reminders, and used as the default sender address of e-mail notifications. -

    - -
    - - -
    -

    - Select the language for your wiki's interface. Some localizations aren't fully complete. Unicode (UTF-8) is used for all localizations. -

    - -
    - - -
      -
    • -
    • -
    • ScriptPath}/config/$script?License=cc&RightsUrl=[license_url]&RightsText=[license_name]&RightsCode=[license_code]&RightsIcon=[license_button]" ); - $icon = urlencode( "$wgServer$wgUploadPath/wiki.png" ); - $ccApp = htmlspecialchars( "http://creativecommons.org/license/?partner=$partner&exit_url=$exit&partner_icon_url=$icon" ); - print "choose"; - ?> - License == "cc" ) { ?> -
        -
      • RightsIcon ) . "\" alt='(Creative Commons icon)' />", "hidden" ); ?>
      • -
      • RightsText ), "hidden" ); ?>
      • -
      • RightsCode ), "hidden" ); ?>
      • -
      • RightsUrl ) . "\">" . htmlspecialchars( $conf->RightsUrl ) . "", "hidden" ); ?>
      • -
      - -
    • -
    -
    -

    - A notice, icon, and machine-readable copyright metadata will be displayed for the license you pick. -

    - - -
    - -
    -
    - -
    -
    - -
    -

    - An admin can lock/delete pages, block users from editing, and do other maintenance tasks.
    - A new account will be added only when creating a new wiki database. -

    - The password cannot be the same as the username. -

    - -
    - - -
      -
    • - turck ) { - echo "
    • "; - aField( $conf, "Shm", "Turck MMCache", "radio", "turck" ); - echo "
    • "; - } - if( $conf->xcache ) { - echo( '
    • ' ); - aField( $conf, 'Shm', 'XCache', 'radio', 'xcache' ); - echo( '
    • ' ); - } - if ( $conf->apc ) { - echo "
    • "; - aField( $conf, "Shm", "APC", "radio", "apc" ); - echo "
    • "; - } - if ( $conf->eaccel ) { - echo "
    • "; - aField( $conf, "Shm", "eAccelerator", "radio", "eaccel" ); - echo "
    • "; - } - if ( $conf->dba ) { - echo "
    • "; - aField( $conf, "Shm", "DBA (not recommended)", "radio", "dba" ); - echo "
    • "; - } - ?> -
    • -
    -
    -
    -

    - An object caching system such as memcached will provide a significant performance boost, - but needs to be installed. Provide the server addresses and ports in a comma-separated list. -

    - MediaWiki can also detect and support eAccelerator, Turck MMCache, APC, and XCache, but - these should not be used if the wiki will be running on multiple application servers. -

    - DBA (Berkeley-style DB) is generally slower than using no cache at all, and is only - recommended for testing. -

    -
    - -

    E-mail, e-mail notification and authentication setup

    - -
    -
    - -
      -
    • -
    • -
    -
    -

    - Use this to disable all e-mail functions (password reminders, user-to-user e-mail, and e-mail notifications) - if sending mail doesn't work on your server. -

    - -
    - -
      -
    • -
    • -
    -
    -

    - The user-to-user e-mail feature (Special:Emailuser) lets the wiki act as a relay to allow users to exchange e-mail without publicly advertising their e-mail address. -

    -
    - -
      -
    • -
    • -
    • -
    -
    -
    -

    - For this feature to work, an e-mail address must be present for the user account, and the notification - options in the user's preferences must be enabled. Also note the - authentication option below. When testing the feature, keep in mind that your own changes will never trigger notifications to be sent to yourself.

    - -

    There are additional options for fine tuning in /includes/DefaultSettings.php; copy these to your LocalSettings.php and edit them there to change them.

    -
    - -
    - -
      -
    • -
    • -
    -
    -
    -

    If this option is enabled, users have to confirm their e-mail address using a magic link sent to them whenever they set or change it, and only authenticated e-mail addresses can receive mails from other users and/or - change notification mails. Setting this option is recommended for public wikis because of potential abuse of the e-mail features above.

    -
    - -
    - -

    Database config

    - -
    -
    - -$errs[DBpicktype]\n"; ?> -
    -
    - -
    -

    - If your database server isn't on your web server, enter the name or IP address here. -

    - -
    -
    -
    -
    -

    - If you only have a single user account and database available, - enter those here. If you have database root access (see below) - you can specify new accounts/databases to be created. This account - will not be created if it pre-exists. If this is the case, ensure that it - has SELECT, INSERT, UPDATE, and DELETE permissions on the MediaWiki database. -

    - -
    - - checked="checked" /> -   -
    -
    - -
    -
    - -
    - -

    - If the database user specified above does not exist, or does not have access to create - the database (if needed) or tables within it, please check the box and provide details - of a superuser account, such as root, which does. -

    - - -
    -
    -

    If you need to share one database between multiple wikis, or - between MediaWiki and another web application, you may choose to - add a prefix to all the table names to avoid conflicts.

    - -

    Avoid exotic characters; something like mw_ is good.

    -
    - -
    -
    Select one:
    -
      -
    • -
    • -
    -
    -

    - InnoDB is best for public web installations, since it has good concurrency - support. MyISAM may be faster in single-user installations. MyISAM databases - tend to get corrupted more often than InnoDB databases. -

    -
    -
    Select one:
    -
      -
    • -
    • -
    • -
    -
    -

    - EXPERIMENTAL: You can enable explicit Unicode charset support - for MySQL 4.1 and 5.0 servers. This is not well tested and may - cause things to break. If upgrading an older installation, leave - in backwards-compatible mode. -

    -
    - - -
    -
    -
    -
    -

    The username specified above (at "DB username") will have its search path set to the above schemas, - so it is recommended that you create a new user. The above schemas are generally correct: - only change them if you are sure you need to.

    -
    - - -
    - - -
    - - - - - -
    - - -

    Installation successful!

    -

    To complete the installation, please do the following: -

      -
    1. Download config/LocalSettings.php with your FTP client or file manager
    2. -
    3. Upload it to the parent directory
    4. -
    5. Delete config/LocalSettings.php
    6. -
    7. Start using your wiki! -
    -

    If you are in a shared hosting environment, do not just move LocalSettings.php -remotely. LocalSettings.php is currently owned by the user your webserver is running under, -which means that anyone on the same server can read your database password! Downloading -it and uploading it again will hopefully change the ownership to a user ID specific to you.

    - -EOT; - } else { - echo << -

    -Installation successful! -Move the config/LocalSettings.php file to the parent directory, then follow - this link to your wiki.

    -

    You should change file permissions for LocalSettings.php as required to -prevent other users on the server reading passwords and altering configuration data.

    - -EOT; - } -} - - -function escapePhpString( $string ) { - if ( is_array( $string ) || is_object( $string ) ) { - return false; - } - return strtr( $string, - array( - "\n" => "\\n", - "\r" => "\\r", - "\t" => "\\t", - "\\" => "\\\\", - "\$" => "\\\$", - "\"" => "\\\"" - )); -} - -function writeLocalSettings( $conf ) { - $conf->PasswordSender = $conf->EmergencyContact; - $magic = ($conf->ImageMagick ? "" : "# "); - $convert = ($conf->ImageMagick ? $conf->ImageMagick : "/usr/bin/convert" ); - $rights = ($conf->RightsUrl) ? "" : "# "; - $hashedUploads = $conf->safeMode ? '' : '# '; - - switch ( $conf->Shm ) { - case 'memcached': - $cacheType = 'CACHE_MEMCACHED'; - $mcservers = var_export( $conf->MCServerArray, true ); - break; - case 'turck': - case 'xcache': - case 'apc': - case 'eaccel': - $cacheType = 'CACHE_ACCEL'; - $mcservers = 'array()'; - break; - case 'dba': - $cacheType = 'CACHE_DBA'; - $mcservers = 'array()'; - break; - default: - $cacheType = 'CACHE_NONE'; - $mcservers = 'array()'; - } - - if ( $conf->Email == 'email_enabled' ) { - $enableemail = 'true'; - $enableuseremail = ( $conf->Emailuser == 'emailuser_enabled' ) ? 'true' : 'false' ; - $eauthent = ( $conf->Eauthent == 'eauthent_enabled' ) ? 'true' : 'false' ; - switch ( $conf->Enotif ) { - case 'enotif_usertalk': - $enotifusertalk = 'true'; - $enotifwatchlist = 'false'; - break; - case 'enotif_allpages': - $enotifusertalk = 'true'; - $enotifwatchlist = 'true'; - break; - default: - $enotifusertalk = 'false'; - $enotifwatchlist = 'false'; - } - } else { - $enableuseremail = 'false'; - $enableemail = 'false'; - $eauthent = 'false'; - $enotifusertalk = 'false'; - $enotifwatchlist = 'false'; - } - - $file = @fopen( "/dev/urandom", "r" ); - if ( $file ) { - $secretKey = bin2hex( fread( $file, 32 ) ); - fclose( $file ); - } else { - $secretKey = ""; - for ( $i=0; $i<8; $i++ ) { - $secretKey .= dechex(mt_rand(0, 0x7fffffff)); - } - print "
  • Warning: \$wgSecretKey key is insecure, generated with mt_rand(). Consider changing it manually.
  • \n"; - } - - # Add slashes to strings for double quoting - $slconf = array_map( "escapePhpString", get_object_vars( $conf ) ); - if( $conf->License == 'gfdl' ) { - # Needs literal string interpolation for the current style path - $slconf['RightsIcon'] = $conf->RightsIcon; - } - - $localsettings = " -# This file was automatically generated by the MediaWiki installer. -# If you make manual changes, please keep track in case you need to -# recreate them later. -# -# See includes/DefaultSettings.php for all configurable settings -# and their default values, but don't forget to make changes in _this_ -# file, not there. -# -# Further documentation for configuration settings may be found at: -# http://www.mediawiki.org/wiki/Manual:Configuration_settings - -# If you customize your file layout, set \$IP to the directory that contains -# the other MediaWiki files. It will be used as a base to locate files. -if( defined( 'MW_INSTALL_PATH' ) ) { - \$IP = MW_INSTALL_PATH; -} else { - \$IP = dirname( __FILE__ ); -} - -\$path = array( \$IP, \"\$IP/includes\", \"\$IP/languages\" ); -set_include_path( implode( PATH_SEPARATOR, \$path ) . PATH_SEPARATOR . get_include_path() ); - -require_once( \"\$IP/includes/DefaultSettings.php\" ); - -# If PHP's memory limit is very low, some operations may fail. -" . ($conf->raiseMemory ? '' : '# ' ) . "ini_set( 'memory_limit', '20M' );" . " - -if ( \$wgCommandLineMode ) { - if ( isset( \$_SERVER ) && array_key_exists( 'REQUEST_METHOD', \$_SERVER ) ) { - die( \"This script must be run from the command line\\n\" ); - } -} -## Uncomment this to disable output compression -# \$wgDisableOutputCompression = true; - -\$wgSitename = \"{$slconf['Sitename']}\"; - -## The URL base path to the directory containing the wiki; -## defaults for all runtime URL paths are based off of this. -\$wgScriptPath = \"{$slconf['ScriptPath']}\"; -\$wgScriptExtension = \"{$slconf['ScriptExtension']}\"; - -## For more information on customizing the URLs please see: -## http://www.mediawiki.org/wiki/Manual:Short_URL - -\$wgEnableEmail = $enableemail; -\$wgEnableUserEmail = $enableuseremail; - -\$wgEmergencyContact = \"{$slconf['EmergencyContact']}\"; -\$wgPasswordSender = \"{$slconf['PasswordSender']}\"; - -## UPO means: this is also a user preference option -\$wgEnotifUserTalk = $enotifusertalk; # UPO -\$wgEnotifWatchlist = $enotifwatchlist; # UPO -\$wgEmailAuthentication = $eauthent; - -\$wgDBtype = \"{$slconf['DBtype']}\"; -\$wgDBserver = \"{$slconf['DBserver']}\"; -\$wgDBname = \"{$slconf['DBname']}\"; -\$wgDBuser = \"{$slconf['DBuser']}\"; -\$wgDBpassword = \"{$slconf['DBpassword']}\"; - -# MySQL specific settings -\$wgDBprefix = \"{$slconf['DBprefix']}\"; - -# MySQL table options to use during installation or update -\$wgDBTableOptions = \"{$slconf['DBTableOptions']}\"; - -# Experimental charset support for MySQL 4.1/5.0. -\$wgDBmysql5 = {$conf->DBmysql5}; - -# Postgres specific settings -\$wgDBport = \"{$slconf['DBport']}\"; -\$wgDBmwschema = \"{$slconf['DBmwschema']}\"; -\$wgDBts2schema = \"{$slconf['DBts2schema']}\"; - -## Shared memory settings -\$wgMainCacheType = $cacheType; -\$wgMemCachedServers = $mcservers; - -## To enable image uploads, make sure the 'images' directory -## is writable, then set this to true: -\$wgEnableUploads = false; -{$magic}\$wgUseImageMagick = true; -{$magic}\$wgImageMagickConvertCommand = \"{$convert}\"; - -## If you want to use image uploads under safe mode, -## create the directories images/archive, images/thumb and -## images/temp, and make them all writable. Then uncomment -## this, if it's not already uncommented: -{$hashedUploads}\$wgHashedUploadDirectory = false; - -## If you have the appropriate support software installed -## you can enable inline LaTeX equations: -\$wgUseTeX = false; - -\$wgLocalInterwiki = \$wgSitename; - -\$wgLanguageCode = \"{$slconf['LanguageCode']}\"; - -\$wgProxyKey = \"$secretKey\"; - -## Default skin: you can change the default skin. Use the internal symbolic -## names, ie 'standard', 'nostalgia', 'cologneblue', 'monobook': -\$wgDefaultSkin = 'monobook'; - -## For attaching licensing metadata to pages, and displaying an -## appropriate copyright notice / icon. GNU Free Documentation -## License and Creative Commons licenses are supported so far. -{$rights}\$wgEnableCreativeCommonsRdf = true; -\$wgRightsPage = \"\"; # Set to the title of a wiki page that describes your license/copyright -\$wgRightsUrl = \"{$slconf['RightsUrl']}\"; -\$wgRightsText = \"{$slconf['RightsText']}\"; -\$wgRightsIcon = \"{$slconf['RightsIcon']}\"; -# \$wgRightsCode = \"{$slconf['RightsCode']}\"; # Not yet used - -\$wgDiff3 = \"{$slconf['diff3']}\"; - -# When you make changes to this configuration file, this will make -# sure that cached pages are cleared. -\$wgCacheEpoch = max( \$wgCacheEpoch, gmdate( 'YmdHis', @filemtime( __FILE__ ) ) ); -"; ## End of setting the $localsettings string - - // Keep things in Unix line endings internally; - // the system will write out as local text type. - return str_replace( "\r\n", "\n", $localsettings ); -} - -function dieout( $text ) { - die( $text . "\n\n\n" ); -} - -function importVar( &$var, $name, $default = "" ) { - if( isset( $var[$name] ) ) { - $retval = $var[$name]; - if ( get_magic_quotes_gpc() ) { - $retval = stripslashes( $retval ); - } - } else { - $retval = $default; - } - return $retval; -} - -function importPost( $name, $default = "" ) { - return importVar( $_POST, $name, $default ); -} - -function importCheck( $name ) { - return isset( $_POST[$name] ); -} - -function importRequest( $name, $default = "" ) { - return importVar( $_REQUEST, $name, $default ); -} - -$radioCount = 0; - -function aField( &$conf, $field, $text, $type = "text", $value = "", $onclick = '' ) { - global $radioCount; - if( $type != "" ) { - $xtype = "type=\"$type\""; - } else { - $xtype = ""; - } - - $id = $field; - $nolabel = ($type == "radio") || ($type == "hidden"); - - if ($type == 'radio') - $id .= $radioCount++; - - if( $nolabel ) { - echo "\t\t\n"; - } - - global $errs; - if(isset($errs[$field])) echo "" . $errs[$field] . "\n"; -} - -function getLanguageList() { - global $wgLanguageNames, $IP; - if( !isset( $wgLanguageNames ) ) { - require_once( "$IP/languages/Names.php" ); - } - - $codes = array(); - - $d = opendir( "../languages/messages" ); - /* In case we are called from the root directory */ - if (!$d) - $d = opendir( "languages/messages"); - while( false !== ($f = readdir( $d ) ) ) { - $m = array(); - if( preg_match( '/Messages([A-Z][a-z_]+)\.php$/', $f, $m ) ) { - $code = str_replace( '_', '-', strtolower( $m[1] ) ); - if( isset( $wgLanguageNames[$code] ) ) { - $name = $code . ' - ' . $wgLanguageNames[$code]; - } else { - $name = $code; - } - $codes[$code] = $name; - } - } - closedir( $d ); - ksort( $codes ); - return $codes; -} - -#Check for location of an executable -# @param string $loc single location to check -# @param array $names filenames to check for. -# @param mixed $versioninfo array of details to use when checking version, use false for no version checking -function locate_executable($loc, $names, $versioninfo = false) { - if (!is_array($names)) - $names = array($names); - - foreach ($names as $name) { - $command = "$loc".DIRECTORY_SEPARATOR."$name"; - if (@file_exists($command)) { - if (!$versioninfo) - return $command; - - $file = str_replace('$1', $command, $versioninfo[0]); - if (strstr(`$file`, $versioninfo[1]) !== false) - return $command; - } - } - return false; -} - -# Test a memcached server -function testMemcachedServer( $server ) { - $hostport = explode(":", $server); - $errstr = false; - $fp = false; - if ( !function_exists( 'fsockopen' ) ) { - $errstr = "Can't connect to memcached, fsockopen() not present"; - } - if ( !$errstr && count( $hostport ) != 2 ) { - $errstr = 'Please specify host and port'; - } - if ( !$errstr ) { - list( $host, $port ) = $hostport; - $errno = 0; - $fsockerr = ''; - - $fp = @fsockopen( $host, $port, $errno, $fsockerr, 1.0 ); - if ( $fp === false ) { - $errstr = "Cannot connect to memcached on $host:$port : $fsockerr"; - } - } - if ( !$errstr ) { - $command = "version\r\n"; - $bytes = fwrite( $fp, $command ); - if ( $bytes != strlen( $command ) ) { - $errstr = "Cannot write to memcached socket on $host:$port"; - } - } - if ( !$errstr ) { - $expected = "VERSION "; - $response = fread( $fp, strlen( $expected ) ); - if ( $response != $expected ) { - $errstr = "Didn't get correct memcached response from $host:$port"; - } - } - if ( $fp ) { - fclose( $fp ); - } - if ( !$errstr ) { - echo "
  • Connected to memcached on $host:$port successfully"; - } - return $errstr; -} - -function database_picker($conf) { - global $ourdb; - print "\n"; - foreach(array_keys($ourdb) as $db) { - if ($ourdb[$db]['havedriver']) { - print "
  • "; - aField( $conf, "DBtype", $ourdb[$db]['fullname'], 'radio', $db, 'onclick'); - print "
  • \n"; - } - } - print "\n"; -} - -function database_switcher($db) { - global $ourdb; - $color = $ourdb[$db]['bgcolor']; - $full = $ourdb[$db]['fullname']; - print "
    $full specific options\n"; -} - -function printListItem( $item ) { - print "
  • $item
  • "; -} - -?> - -
    -
    -

    This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version.

    - -

    This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details.

    - -

    You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - or read it online

    -
    - - - - -
    - - -
    - -

    MediaWiki is Copyright © 2001-2008 by Magnus Manske, Brion Vibber, Lee Daniel Crocker, Tim Starling, Erik Möller, Gabriel Wicke and others.

    -
    -
    - - - - +// Isolate the rest of the code so this file can die out cleanly +// if we find we're running under PHP 4.x... We use PHP 5 syntax +// which doesn't parse under 4. +require( dirname( __FILE__ ) . "/Installer.php" );