# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# http://www.gnu.org/copyleft/gpl.html
-error_reporting( E_ALL );
+error_reporting( E_ALL | E_STRICT );
header( "Content-type: text/html; charset=utf-8" );
@ini_set( "display_errors", true );
<p>To make the directory writable on a Unix/Linux system:</p>
<pre>
- cd <i>/path/to/wiki</i>
+ cd <i>" . htmlspecialchars( dirname( dirname( __FILE__ ) ) ) . "</i>
chmod a+w config
</pre>
$ourdb[$db]['havedriver'] = 1;
}
}
-error_reporting( E_ALL );
+error_reporting( E_ALL | E_STRICT );
if (!$phpdatabases) {
print "Could not find a suitable database driver!<ul>";
Perl-compatible regular expression functions." );
$memlimit = ini_get( "memory_limit" );
-$conf->raiseMemory = false;
-if( empty( $memlimit ) || $memlimit == -1 ) {
+if( $memlimit == -1 ) {
print "<li>PHP is configured with no <tt>memory_limit</tt>.</li>\n";
} else {
- print "<li>PHP's <tt>memory_limit</tt> 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.<br /><b>" . htmlspecialchars( $memlimit ) . " seems too low, installation may fail!</b>";
- } else {
- $conf->raiseMemory = true;
- print "ok.";
- }
+ print "<li>PHP's <tt>memory_limit</tt> is " . htmlspecialchars( $memlimit ). " bytes. ";
+ $newlimit = wfMemoryLimit();
+ $memlimit = wfShorthandToInteger( $memlimit );
+ if( $newlimit < $memlimit ) {
+ print "<b>Failed raising limit, installation may fail.</b>";
+ } elseif ( $newlimit > $memlimit ) {
+ print "Raised <tt>memory_limit</tt> to " . htmlspecialchars( $newlimit ) . " bytes. ";
}
print "</li>\n";
}
cannot use these for object caching.</li>' );
}
+$conf->phpCliPath = false;
+$phpClilocations = array_merge(
+ array(
+ "/usr/bin",
+ "/usr/local/bin",
+ "/opt/csw/bin",
+ "/usr/gnu/bin",
+ "/usr/sfw/bin" ),
+ explode( PATH_SEPARATOR, getenv( "PATH" ) ) );
+$phpClinames = array( "php", "php.exe" );
+foreach ($phpClilocations as $loc) {
+ $exe = locate_executable($loc, $phpClinames);
+ if ($exe !== false) {
+ $conf->phpCliPath= $exe;
+ break;
+ }
+}
+
$conf->diff3 = false;
$diff3locations = array_merge(
array(
$conf->RootUser = importPost( "RootUser", "root" );
$conf->RootPW = importPost( "RootPW", "" );
$useRoot = importCheck( 'useroot', false );
+ $conf->populateadmin = importCheck( 'populateadmin', false );
$conf->LanguageCode = importPost( "LanguageCode", "en" );
## MySQL specific:
$conf->DBprefix = importPost( "DBprefix" );
$errs["DBprefix_ora"] = "Invalid table prefix";
}
-error_reporting( E_ALL );
+error_reporting( E_ALL | E_STRICT );
/**
* Initialise $wgLang and $wgContLang to something so we can
define( 'STDERR', fopen("php://stderr", "wb"));
$wgUseDatabaseMessages = false; /* FIXME: For database failure */
require_once( "$IP/includes/Setup.php" );
+ Language::getLocalisationCache()->disableBackend();
+
chdir( "config" );
$wgTitle = Title::newFromText( "Installation script" );
- error_reporting( E_ALL );
+ error_reporting( E_ALL | E_STRICT );
print "<li>Loading class: " . htmlspecialchars( $dbclass ) . "</li>\n";
if ( $conf->DBtype != 'sqlite' ) {
$dbc = new $dbclass;
echo( "<li>Attempting to connect to database \"" . htmlspecialchars( $wgDBname ) .
"\" as \"" . htmlspecialchars( $db_user ) . "\"..." );
$wgDatabase = $dbc->newFromParams($wgDBserver, $db_user, $db_pass, $wgDBname, 1);
+ // enable extra debug messages
+ $dbc->setMode(DatabaseIbm_db2::INSTALL_MODE);
+ $wgDatabase->setMode(DatabaseIbm_db2::INSTALL_MODE);
+
if (!$wgDatabase->isOpen()) {
print " error: " . htmlspecialchars( $wgDatabase->lastError() ) . "</li>\n";
} else {
if ($wgDatabase->isOpen()) {
$wgDBOracleDefTS = $conf->DBdefTS_ora;
$wgDBOracleTempTS = $conf->DBtempTS_ora;
- dbsource( "../maintenance/ora/user.sql", $wgDatabase );
+ $wgDatabase->sourceFile( "../maintenance/ora/user.sql" );
} else {
echo "<li>Invalid database superuser, please supply a valid superuser account.</li>";
echo "<li>ERR: ".print_r(oci_error(), true)."</li>";
$myver = $wgDatabase->getServerVersion();
}
} else { # not mysql
- error_reporting( E_ALL );
+ error_reporting( E_ALL | E_STRICT );
$wgSuperUser = '';
## Possible connect as a superuser
// Changed !mysql to postgres check since it seems to only apply to postgres
$wgDatabase = $dbc->newFromParams($wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname, 1);
if (!$wgDatabase->isOpen()) {
print " error: " . htmlspecialchars( $wgDatabase->lastError() ) . "</li>\n";
+ $errs["DBserver"] = "Could not connect to database as user";
+ $errs["DBuser"] = "Check username";
+ $errs["DBpassword"] = "and password";
+ continue;
} else {
$myver = $wgDatabase->getServerVersion();
}
print " <b class='error'>If the next step fails, see <a href='http://dev.mysql.com/doc/mysql/en/old-client.html'>http://dev.mysql.com/doc/mysql/en/old-client.html</a> for help.</b>";
}
print "</li>\n";
- dbsource( "../maintenance/users.sql", $wgDatabase );
+ $wgDatabase->sourceFile( "../maintenance/users.sql" );
}
}
}
chdir( "config" );
print "</pre>\n";
print "<ul><li>Finished update checks.</li>\n";
+ // if tables don't yet exist
} else {
# Determine available storage engines if possible
if ( $conf->DBtype == 'mysql' && version_compare( $myver, "4.1.2", "ge" ) ) {
$res = $wgDatabase->query( 'SHOW ENGINES' );
$found = false;
while ( $row = $wgDatabase->fetchObject( $res ) ) {
- if ( $row->Engine == $conf->DBengine ) {
+ if ( $row->Engine == $conf->DBengine && ( $row->Support == 'YES' || $row->Support == 'DEFAULT' ) ) {
$found = true;
break;
}
# FIXME: Check for errors
print "<li>Creating tables...";
if ($conf->DBtype == 'mysql') {
- dbsource( "../maintenance/tables.sql", $wgDatabase );
- dbsource( "../maintenance/interwiki.sql", $wgDatabase );
+ $wgDatabase->sourceFile( "../maintenance/tables.sql" );
+ $wgDatabase->sourceFile( "../maintenance/interwiki.sql" );
} elseif (is_callable(array($wgDatabase, 'setup_database'))) {
$wgDatabase->setup_database();
}
}
print " done.</li>\n";
+
+
+ if ($conf->DBtype == 'ibm_db2') {
+ // Now that table creation is done, make sure everything is committed
+ // Do this before doing inserts through API
+ if ($wgDatabase->lastError()) {
+ print "<li>Errors encountered during table creation -- rolled back</li>\n";
+ $wgDatabase->rollback();
+ }
+ else {
+ print "<li>MediaWiki tables successfully created</li>\n";
+ $wgDatabase->commit();
+ }
+ }
print "<li>Initializing statistics...</li>\n";
$wgDatabase->insert( 'site_stats',
} else {
# Yes, so run the grants
echo( "<li>" . htmlspecialchars( "Granting user permissions to $wgDBuser on $wgDBname..." ) );
- dbsource( "../maintenance/users.sql", $wgDatabase );
+ $wgDatabase->sourceFile( "../maintenance/users.sql" );
echo( "success.</li>\n" );
}
}
$revid = $revision->insertOn( $wgDatabase );
$article->updateRevisionOn( $wgDatabase, $revision );
}
- // Now that all database work is done, make sure everything is committed
- $wgDatabase->commit();
/* Write out the config file now that all is well */
print "<li style=\"list-style: none\">\n";
<ul class="plain">
<li><?php aField( $conf, "License", "No license metadata", "radio", "none" ); ?></li>
<li><?php aField( $conf, "License", "Public Domain", "radio", "pd" ); ?></li>
- <li><?php aField( $conf, "License", "GNU Free Documentation License 1.2 (Wikipedia-compatible)", "radio", "gfdl1_2" ); ?></li>
+ <li><?php aField( $conf, "License", "GNU Free Documentation License 1.2", "radio", "gfdl1_2" ); ?></li>
<li><?php aField( $conf, "License", "GNU Free Documentation License 1.3", "radio", "gfdl1_3" ); ?></li>
<li><?php
aField( $conf, "License", "A Creative Commons license - ", "radio", "cc" );
<label class="column">Superuser account:</label>
<input type="checkbox" name="useroot" id="useroot" <?php if( $useRoot ) { ?>checked="checked" <?php } ?> />
<label for="useroot">Use superuser account</label>
+ <input type="checkbox" name="populateadmin" id="populateadmin" <?php if( $conf->populateadmin ) { ?>checked="checked" <?php } ?> />
+ <label for="populateadmin">Set as admin user for maintenance</label>
</div>
<div class="config-input"><?php aField( $conf, "RootUser", "Superuser name:", "text" ); ?></div>
<div class="config-input"><?php aField( $conf, "RootPW", "Superuser password:", "password" ); ?></div>
# Needs literal string interpolation for the current style path
$slconf['RightsIcon'] = $conf->RightsIcon;
}
+
+ if( $conf->populateadmin ) {
+ $slconf['DBadminuser'] = $conf->RootUser;
+ $slconf['DBadminpassword'] = $conf->RootPW;
+ }
if( $conf->DBtype == 'mysql' ) {
$dbsettings =
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\" );
{$dbsettings}
+## Database admin settings, used for maintenance scripts
+\$wgDBadminuser = \"". ($conf->populateadmin ? $slconf['DBadminuser'] : '' )."\";
+\$wgDBadminpassword = \"". ($conf->populateadmin ? $slconf['DBadminpassword'] : '' )."\";
+
## Shared memory settings
\$wgMainCacheType = $cacheType;
\$wgMemCachedServers = $mcservers;
## you can enable inline LaTeX equations:
\$wgUseTeX = false;
+## Set \$wgCacheDirectory to a writable directory on the web server
+## to make your wiki go slightly faster. The directory should not
+## be publically accessible from the web.
+#\$wgCacheDirectory = \"\$IP/cache\";
+
\$wgLocalInterwiki = strtolower( \$wgSitename );
\$wgLanguageCode = \"{$slconf['LanguageCode']}\";
\$wgDiff3 = \"{$slconf['diff3']}\";
+\$wgPhpCliPath = \"{$slconf['phpCliPath']}\";
+
# When you make changes to this configuration file, this will make
# sure that cached pages are cleared.
\$wgCacheEpoch = max( \$wgCacheEpoch, gmdate( 'YmdHis', @filemtime( __FILE__ ) ) );
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];
+ $name = wfBCP47( $code ) . ' - ' . $wgLanguageNames[$code];
} else {
$name = $code;
}