X-Git-Url: https://git.cyclocoop.org/%242?a=blobdiff_plain;f=config%2Findex.php;h=d913bbb1e8afa811d793a344d213187b25b55b42;hb=83001e90f1d7b6659b6bf6d269646172df1ebafc;hp=75db7d007f878fb8b04ac3840179a86eccdac5a5;hpb=de57f07be4733aa6e74bec66ccff4ea9e850faa8;p=lhc%2Fweb%2Fwiklou.git diff --git a/config/index.php b/config/index.php index 75db7d007f..d913bbb1e8 100644 --- a/config/index.php +++ b/config/index.php @@ -19,1764 +19,25 @@ # 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 ); -$sep = PATH_SEPARATOR; -if( !ini_set( "include_path", ".$sep$IP$sep$IP/includes$sep$IP/languages" ) ) { - set_include_path( ".$sep$IP$sep$IP/includes$sep$IP/languages" ); -} # Define an entry point and include some files 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( "install-utils.inc" ); -install_version_checks(); - -require_once( "includes/Defines.php" ); -require_once( "includes/DefaultSettings.php" ); -require_once( "includes/MagicWord.php" ); -require_once( "includes/Namespace.php" ); -require_once( "includes/ProfilerStub.php" ); - -## 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'; - -?> - - - - - 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( "install-utils.inc" ); -require_once( "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 ) { - $this->DBschema = $schema; - switch ( $this->DBschema ) { - case 'mysql5': - $this->DBTableOptions = 'ENGINE=InnoDB, DEFAULT CHARSET=utf8'; - $this->DBmysql5 = 'true'; - break; - case 'mysql5-binary': - $this->DBTableOptions = 'ENGINE=InnoDB, DEFAULT CHARSET=binary'; - $this->DBmysql5 = 'true'; - break; - default: - $this->DBTableOptions = 'TYPE=InnoDB'; - $this->DBmysql5 = 'false'; - } - # 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:"; -foreach (array_keys($ourdb) AS $db) { - if ($ourdb[$db]['havedriver']) { - $DefaultDBtype = $db; - print " ".$ourdb[$db]['fullname']; - } -} -print "
  • \n"; -if (count($phpdatabases) != 1) - $DefaultDBtype = ''; - -if( ini_get( "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( ini_get( "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; +# 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; } -$sapi = php_sapi_name(); -print "
  • PHP server API is $sapi; "; -if( $wgUsePathInfo ) { - print "ok, using pretty URLs (index.php/Page_Title)"; -} else { - print "using ugly URLs (index.php?title=Page_Title)"; -} -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 = ini_get( 'session.save_path' ); -# 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 appears to be valid.
  • "; -} else { - # Something not right? Halt the installation so the user can fix it up - dieout( "Your session save path appears to be invalid or is not writable. - PHP needs to be able to save data to this location in order for correct - session operation. Please check that session.save_path in - PHP.ini points to a valid path, and is read/write/execute for - the user your web server is running under." ); -} - -# 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->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"; -} - -if( !$conf->turck && !$conf->eaccel && !$conf->apc ) { - echo( '
  • Couldn\'t find Turck MMCache, - eAccelerator, or - APC. Object caching functions cannot be used.
  • ' ); -} - -$conf->diff3 = false; -$diff3locations = array_merge( - array( - "/usr/bin", - "/usr/local/bin", - "/opt/csw/bin", - "/usr/gnu/bin", - "/usr/sfw/bin" ), - explode( $sep, 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"; - -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 ); - - ## MySQL specific: - $conf->DBprefix = importPost( "DBprefix" ); - $conf->setSchema( importPost( "DBschema", "mysql4" ) ); - $conf->LanguageCode = importPost( "LanguageCode", "en" ); - - ## Postgres specific: - $conf->DBport = importPost( "DBport", "5432" ); - $conf->DBmwschema = importPost( "DBmwschema", "mediawiki" ); - $conf->DBts2schema = importPost( "DBts2schema", "public" ); - -/* Check for validity */ -$errs = array(); - -if( $conf->Sitename == "" || $conf->Sitename == "MediaWiki" || $conf->Sitename == "Mediawiki" ) { - $errs["Sitename"] = "Must not be blank or \"MediaWiki\""; -} -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"; -} - -if( $conf->SysopPass == "" ) { - $errs["SysopPass"] = "Must not be blank"; -} -if( $conf->SysopPass != $conf->SysopPass2 ) { - $errs["SysopPass2"] = "Passwords don't match!"; -} - -$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; - $wgUseDatabaseMessages = false; /* FIXME: For database failure */ - require_once( "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 ) { - $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; - } - } - 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 ( !$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; - } elseif ( 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 ( $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 ); - } - } - - # 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 " - - -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/index.php?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. -

    - -
    - - -
      -
    • - turck ) { - echo "
    • "; - aField( $conf, "Shm", "Turck MMCache", "radio", "turck" ); - echo "
    • "; - } - if ( $conf->apc ) { - echo "
    • "; - aField( $conf, "Shm", "APC", "radio", "apc" ); - echo "
    • "; - } - if ( $conf->eaccel ) { - echo "
    • "; - aField( $conf, "Shm", "eAccelerator", "radio", "eaccel" ); - echo "
    • "; - } - ?> -
    • -
    -
    -
    -

    - Using a shared memory system such as Turck MMCache, APC, eAccelerator, or Memcached - will speed up MediaWiki significantly. Memcached is the best solution but needs to be - installed. Specify the server addresses and ports in a comma-separated list. Only - use Turck shared memory if the wiki will be running on a single Apache server. -

    -
    - -

    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:
    -
      -
    • -
    • -
    • -
    -
    -

    - 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 into the parent directory, then follow - this link to your wiki.

    \n"; - } -} - - -function escapePhpString( $string ) { - 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 'apc': - case 'eaccel': - $cacheType = 'CACHE_ACCEL'; - $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. - -# 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( \"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']}\"; - -## 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']}\"; - -## For a detailed description of the following switches see -## http://meta.wikimedia.org/Enotif and http://meta.wikimedia.org/Eauthent -## There are many more options for fine tuning available see -## /includes/DefaultSettings.php -## 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. -\$configdate = gmdate( 'YmdHis', @filemtime( __FILE__ ) ); -\$wgCacheEpoch = max( \$wgCacheEpoch, \$configdate ); - "; ## 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; - if( !isset( $wgLanguageNames ) ) { - require_once( "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'; - var_dump( $hostport ); - } - 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 " - - -
    - - -
    - -

    MediaWiki is Copyright © 2001-2007 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" );