, 2006 Rob Church # http://www.mediawiki.org/ # # 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. # 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 ); } } ?>

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.

    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; } $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." ); } # Crude check for session support if( !function_exists( 'session_name' ) ) dieout( "PHP's session module is missing. MediaWiki requires session support in order to function." ); # Likewise for PCRE if( !function_exists( 'preg_match' ) ) dieout( "The PCRE regular expression functions are missing. MediaWiki requires these in order to function." ); $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 ) . ". If this is too low, installation may fail! "; $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."; } else { $conf->raiseMemory = true; print "ok."; } } print "
  • \n"; } $conf->zlib = function_exists( "gzencode" ); if( $conf->zlib ) { print "
  • Have zlib support; enabling output compression.
  • \n"; } else { print "
  • No zlib support.
  • \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->UseImageResize = $conf->HaveGD || $conf->ImageMagick; $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->DBschema = importPost( "DBschema", "mysql4" ); $conf->DBmysql5 = ($conf->DBschema == "mysql5" || $conf->DBschema == "mysql5-binary") ? "true" : "false"; $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->DBpassword == "" ) { $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( $conf->Root ) { $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"; # Create user if required (todo: other databases) if ( $conf->Root && $conf->DBtype == 'mysql') { $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 "
  • Finished update checks.
  • \n"; } else { # FIXME: Check for errors print "
  • Creating tables..."; if ($conf->DBtype == 'mysql') { switch( $conf->DBschema ) { case "mysql4": print " using MySQL 4 table defs..."; dbsource( "../maintenance/tables.sql", $wgDatabase ); break; case "mysql5": print " using MySQL 5 UTF-8 table defs..."; dbsource( "../maintenance/mysql5/tables.sql", $wgDatabase ); break; case "mysql5-binary": print " using MySQL 5 binary table defs..."; dbsource( "../maintenance/mysql5/tables-binary.sql", $wgDatabase ); break; default: dieout( " invalid schema selection!
  • " ); } dbsource( "../maintenance/interwiki.sql", $wgDatabase ); } else if ($conf->DBtype == 'postgres') { $wgDatabase->setup_database(); } else { $errs["DBtype"] = "Do not know how to handle database type '$conf->DBtype'"; continue; } print " done.\n"; print "
  • Initializing data...
  • \n"; $wgDatabase->insert( 'site_stats', array ( 'ss_row_id' => 1, 'ss_total_views' => 0, 'ss_total_edits' => 0, 'ss_good_articles' => 0 ) ); # Set up the "regular user" account *if we can, and if we need to* if( $conf->Root and $conf->DBtype == 'mysql') { # See if we need to $wgDatabase2 = $dbc->newFromParams( $wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname, 1 ); if( $wgDatabase2->isOpen() ) { # Nope, just close the test connection and continue $wgDatabase2->close(); echo( "
  • User $wgDBuser exists. Skipping grants.
  • \n" ); } else { # Yes, so run the grants echo( "
  • Granting user permissions to $wgDBuser on $wgDBname..." ); dbsource( "../maintenance/users.sql", $wgDatabase ); echo( "success.
  • \n" ); } } if( $conf->SysopName ) { $u = User::newFromName( $conf->getSysopName() ); if ( !$u ) { print "
  • Warning: Skipped sysop account creation - invalid username!
  • \n"; } else if ( 0 == $u->idForName() ) { $u->addToDatabase(); $u->setPassword( $conf->getSysopPass() ); $u->saveSettings(); $u->addGroup( "sysop" ); $u->addGroup( "bureaucrat" ); print "
  • Created sysop account " . htmlspecialchars( $conf->SysopName ) . ".
  • \n"; } else { print "
  • Could not create user - already exists!
  • \n"; } } else { print "
  • Skipped sysop account creation, no name given.
  • \n"; } $titleobj = Title::newFromText( wfMsgNoDB( "mainpage" ) ); $article = new Article( $titleobj ); $newid = $article->insertOn( $wgDatabase ); $revision = new Revision( array( 'page' => $newid, 'text' => wfMsg( 'mainpagetext' ) . "\n\n" . wfMsg( 'mainpagedocfooter' ), 'comment' => '', 'user' => 0, 'user_text' => 'MediaWiki default', ) ); $revid = $revision->insertOn( $wgDatabase ); $article->updateRevisionOn( $wgDatabase, $revision ); } /* Write out the config file now that all is well */ print "
  • \n"; print "

    Creating LocalSettings.php...

    \n\n"; $localSettings = "<" . "?php$endl$local$endl?" . ">\r\n"; // Fix up a common line-ending problem (due to CVS on Windows) $localSettings = str_replace( "\r\n", "\n", $localSettings ); $f = fopen( "LocalSettings.php", 'xt' ); if( $f == false ) { dieout( "

    Couldn't write out LocalSettings.php. Check that the directory permissions are correct and that there isn't already a file of that name here...

    \n" . "

    Here's the file that would have been written, try to paste it into place manually:

    \n" . "
    \n" . htmlspecialchars( $localSettings ) . "
    \n" ); } if(fwrite( $f, $localSettings ) ) { fclose( $f ); 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/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-separted 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 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 will have it's search path set to the above schemas, so it is recommended that you create a new user.

    Installation successful!

    To complete the installation, please do the following:

    1. Download config/LocalSettings.php with your FTP client or file manager
    2. Upload it to the parent directory
    3. Delete config/LocalSettings.php
    4. 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->UseImageResize = $conf->UseImageResize ? 'true' : 'false'; $conf->PasswordSender = $conf->EmergencyContact; $zlib = ($conf->zlib ? "" : "# "); $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\" ); } } elseif ( empty( \$wgNoOutputBuffer ) ) { ## Compress output if the browser supports it {$zlib}if( !ini_get( 'zlib.output_compression' ) ) @ob_start( 'ob_gzhandler' ); } \$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']}\"; \$wgDBport = \"{$slconf['DBport']}\"; \$wgDBprefix = \"{$slconf['DBprefix']}\"; # Schemas for Postgres \$wgDBmwschema = \"{$slconf['DBmwschema']}\"; \$wgDBts2schema = \"{$slconf['DBts2schema']}\"; # Experimental charset support for MySQL 4.1/5.0. \$wgDBmysql5 = {$conf->DBmysql5}; ## 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; \$wgUseImageResize = {$conf->UseImageResize}; {$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.

    _ some

    some

    hot order

    order

    build count

    count

    sky land

    land

    parent common

    common

    idea world

    world

    minute us

    us

    grew subject

    subject

    track pattern

    pattern

    flower many

    many

    triangle cat

    cat

    double lone

    lone

    got beat

    beat

    town hope

    hope

    large hurry

    hurry

    similar crowd

    crowd

    sound prepare

    prepare

    look village

    village

    bed noon

    noon

    gold is

    is

    oil yard

    yard

    noun design

    design

    caught call

    call

    sell could

    could

    race half

    half

    hurry know

    know

    chair light

    light

    opposite string

    string

    city third

    third

    ten hundred

    hundred

    bit cow

    cow

    ball plane

    plane

    hurry else

    else

    now score

    score

    separate is

    is

    had band

    band

    success toward

    toward

    shell charge

    charge

    box drive

    drive

    anger group

    group

    voice whose

    whose

    save soft

    soft

    skill build

    build

    section farm

    farm

    keep mind

    mind

    rope repeat

    repeat

    may determine

    determine

    color
    _ beer granita recipe root

    beer granita recipe root

    measure winco foods and food stamps

    winco foods and food stamps

    else recipes american culinary institute

    recipes american culinary institute

    suffix foods containing melatonin

    foods containing melatonin

    perhaps recipe for p mushrooms

    recipe for p mushrooms

    equate food that contain drugs

    food that contain drugs

    claim indian yogurt sauce cucumbers recipe

    indian yogurt sauce cucumbers recipe

    nation nut horn cookie recipe

    nut horn cookie recipe

    size super bowl cake decorating recipes

    super bowl cake decorating recipes

    equate foods containing melatonin

    foods containing melatonin

    leave food that they eat in haiti

    food that they eat in haiti

    move food that they eat in haiti

    food that they eat in haiti

    die recipe for grilling pineapple

    recipe for grilling pineapple

    property congressional hearing on food supply

    congressional hearing on food supply

    care recipe for p mushrooms

    recipe for p mushrooms

    year seafood celebration southern living recipes

    seafood celebration southern living recipes

    group beer granita recipe root

    beer granita recipe root

    level recipe and coffee cake

    recipe and coffee cake

    twenty steamed brown bread recipe photl

    steamed brown bread recipe photl

    wave food drive cans

    food drive cans

    raise super bowl cake decorating recipes

    super bowl cake decorating recipes

    note sprinkle cinnamon pie crust recipes

    sprinkle cinnamon pie crust recipes

    visit yellow dinner ware

    yellow dinner ware

    floor gourmet cooking club

    gourmet cooking club

    spring hermes lunch photo

    hermes lunch photo

    field convection oven pumpkin bread recipe

    convection oven pumpkin bread recipe

    block chocolate sauce with liquor recipe

    chocolate sauce with liquor recipe

    fear bronze chicken recipe

    bronze chicken recipe

    add cafe restaurant lunch muntplein amsterdam

    cafe restaurant lunch muntplein amsterdam

    heavy seafood celebration southern living recipes

    seafood celebration southern living recipes

    field bronze chicken recipe

    bronze chicken recipe

    sound ferrero rocher recipe

    ferrero rocher recipe

    shout food drive cans

    food drive cans

    beauty seafood celebration southern living recipes

    seafood celebration southern living recipes

    separate camping pouch cooking

    camping pouch cooking

    multiply egg sausage breakfast cassarole

    egg sausage breakfast cassarole

    learn cafe restaurant lunch muntplein amsterdam

    cafe restaurant lunch muntplein amsterdam

    natural recipe and coffee cake

    recipe and coffee cake

    north chocolate sauce with liquor recipe

    chocolate sauce with liquor recipe

    before gerber organic baby foods

    gerber organic baby foods

    under cherokee food inc

    cherokee food inc

    kill recipe for p mushrooms

    recipe for p mushrooms

    grand super bowl cake decorating recipes

    super bowl cake decorating recipes

    idea food drive cans

    food drive cans

    leg congressional hearing on food supply

    congressional hearing on food supply

    lone food drive cans

    food drive cans

    heart curry leaf indian food portland

    curry leaf indian food portland

    wood sprinkle cinnamon pie crust recipes

    sprinkle cinnamon pie crust recipes

    walk gerber organic baby foods

    gerber organic baby foods

    pay curry leaf indian food portland

    curry leaf indian food portland

    want winco foods and food stamps

    winco foods and food stamps

    bird food that they eat in haiti

    food that they eat in haiti

    rail ferrero rocher recipe

    ferrero rocher recipe

    how foods made from spelt

    foods made from spelt

    stick horadaric cube recipes

    horadaric cube recipes

    since super hero lunch boxes discount

    super hero lunch boxes discount

    for curry leaf indian food portland

    curry leaf indian food portland

    light sambucco in cooking

    sambucco in cooking

    master recipe for p mushrooms

    recipe for p mushrooms

    particular sambucco in cooking

    sambucco in cooking

    plan hermes lunch photo

    hermes lunch photo

    than ferrero rocher recipe

    ferrero rocher recipe

    huge ferrero rocher recipe

    ferrero rocher recipe

    center recipe for grilling pineapple

    recipe for grilling pineapple

    subject foods made from spelt

    foods made from spelt

    even beer granita recipe root

    beer granita recipe root

    crop food that contain drugs

    food that contain drugs

    blow winco foods and food stamps

    winco foods and food stamps

    process gourmet cooking club

    gourmet cooking club

    near what s hot diabetic meal plans

    what s hot diabetic meal plans

    suggest food that they eat in haiti

    food that they eat in haiti

    sail steamed brown bread recipe photl

    steamed brown bread recipe photl

    green food that they eat in haiti

    food that they eat in haiti

    long camping pouch cooking

    camping pouch cooking

    level cherokee food inc

    cherokee food inc

    main horadaric cube recipes

    horadaric cube recipes

    moon recipe and coffee cake

    recipe and coffee cake

    shell sunset magazine croissant recipe

    sunset magazine croissant recipe

    and congressional hearing on food supply

    congressional hearing on food supply

    cold recipe for p mushrooms

    recipe for p mushrooms

    root egg sausage breakfast cassarole

    egg sausage breakfast cassarole

    road nut horn cookie recipe

    nut horn cookie recipe

    corner sunset magazine croissant recipe

    sunset magazine croissant recipe

    dog egg sausage breakfast cassarole

    egg sausage breakfast cassarole

    multiply sprinkle cinnamon pie crust recipes

    sprinkle cinnamon pie crust recipes

    drop beer granita recipe root

    beer granita recipe root

    act recipe for chicken soup with spinach

    recipe for chicken soup with spinach

    heard recipe for p mushrooms

    recipe for p mushrooms

    night sambucco in cooking

    sambucco in cooking

    compare curry leaf indian food portland

    curry leaf indian food portland

    few winco foods and food stamps

    winco foods and food stamps

    hold hermes lunch photo

    hermes lunch photo

    water gerber organic baby foods

    gerber organic baby foods

    wave steamed brown bread recipe photl

    steamed brown bread recipe photl

    got gerber organic baby foods

    gerber organic baby foods

    try chocolate sauce with liquor recipe

    chocolate sauce with liquor recipe

    our gerber organic baby foods

    gerber organic baby foods

    clock recipe for chicken soup with spinach

    recipe for chicken soup with spinach

    cotton cafe restaurant lunch muntplein amsterdam

    cafe restaurant lunch muntplein amsterdam

    unit curry leaf indian food portland

    curry leaf indian food portland

    loud horadaric cube recipes

    horadaric cube recipes

    an ferrero rocher recipe

    ferrero rocher recipe

    continent horadaric cube recipes

    horadaric cube recipes

    sound recipes american culinary institute

    recipes american culinary institute

    afraid cherokee food inc

    cherokee food inc

    branch convection oven pumpkin bread recipe

    convection oven pumpkin bread recipe

    sand convection oven pumpkin bread recipe

    convection oven pumpkin bread recipe

    clothe what s hot diabetic meal plans

    what s hot diabetic meal plans

    describe congressional hearing on food supply

    congressional hearing on food supply

    small beer granita recipe root

    beer granita recipe root

    whose bourbon pate recipe

    bourbon pate recipe

    nose chicken pita recipe

    chicken pita recipe

    language pork loin and pineapple recipe

    pork loin and pineapple recipe

    sound what foods improve basketball performance

    what foods improve basketball performance

    listen healthy recipes for bread machines

    healthy recipes for bread machines

    unit hand decorated cookies recipes shortbread

    hand decorated cookies recipes shortbread

    listen low fat gram foods

    low fat gram foods

    door 2000 food establishment plan review guide

    2000 food establishment plan review guide

    leg cherry freezer jam recipe

    cherry freezer jam recipe

    segment recipes using life or chex cereal

    recipes using life or chex cereal

    subtract 3 burner cooking system

    3 burner cooking system

    hurry staff training induction food service

    staff training induction food service

    strong diabetic potato recipe

    diabetic potato recipe

    common meals on vacation

    meals on vacation

    us serengeti plains food chains

    serengeti plains food chains

    poor revolutionary recipes

    revolutionary recipes

    fraction beer and food pairings

    beer and food pairings

    act ideal food products co

    ideal food products co

    necessary yaroslavl recipes

    yaroslavl recipes

    red vanilla mudslide recipe

    vanilla mudslide recipe

    shall menu cat food recall information

    menu cat food recall information

    together kitten replacement formula recipe

    kitten replacement formula recipe

    front hulda clark cancer recipe

    hulda clark cancer recipe

    friend diarrhea and passing undigested food

    diarrhea and passing undigested food

    thus underwater frog food

    underwater frog food

    his recipes for wedding reception appetizers

    recipes for wedding reception appetizers

    history cooking dinner for one

    cooking dinner for one

    corn recipes for bing cherry pie

    recipes for bing cherry pie

    every
    hardcore fucking trailers hardcore fucking trailers- other katie kaye naked pictures katie kaye naked pictures- hill busty bikini pics busty bikini pics- chair sexy mature porno sexy mature porno- example baby face teen porn baby face teen porn- nose country girls singles country girls singles- seem female tgp movies female tgp movies- square filipino ladyboys filipino ladyboys- sand teenage tits and ass teenage tits and ass- door pool party video xxx pool party video xxx- perhaps greenville escorts sc greenville escorts sc- tone winnie the pooh art winnie the pooh art- capital pheasant breasts recipes pheasant breasts recipes- both russian free xxx trailers russian free xxx trailers- pretty county fair strip show county fair strip show- carry heritage gay men travel heritage gay men travel- collect linden holliday bdsm linden holliday bdsm- big straight couples naked straight couples naked- second cedartown georgia sex cedartown georgia sex- do amateur allure megaerotic amateur allure megaerotic- flower real big boobs free real big boobs free- told polish escorts in belfast polish escorts in belfast- silver dark fantasy erotic dark fantasy erotic- organ g4 kristin holt nude g4 kristin holt nude- observe teens pics index teens pics index- clear supper horny goat weed supper horny goat weed- poor dr edgar butts dr edgar butts- spread horny older horny older- those nude filipina photos nude filipina photos- talk massive porn massive porn- paint boys underwear brands boys underwear brands- new janet alfano anal janet alfano anal- possible porn shops in naples porn shops in naples- stream bdsm 1939 bdsm 1939- pattern diane kruger s perfect nipples diane kruger s perfect nipples- root clit clitoris pictures pussy clit clitoris pictures pussy- grand edith cummings 1920s golfer edith cummings 1920s golfer- duck shemale vanity pictures shemale vanity pictures- edge teen lovin teen lovin- shine cock slash pics cock slash pics- free spanking ageplay images spanking ageplay images- indicate blonde dreadlocks blonde dreadlocks- flower fetish jacket nylon fetish jacket nylon- shoe punk d my chemical romance punk d my chemical romance- burn bbw vidio bbw vidio- often opposite sex identical twin opposite sex identical twin- material vampire suck vampire suck- fun naked chubby teen pics naked chubby teen pics- continue guyaquil gay sex guyaquil gay sex- number dick goddard rescue dick goddard rescue- west humiliation session mistress humiliation session mistress- segment red skin on breast red skin on breast- high the erotic traveler 02 the erotic traveler 02- fit escort mexico escort mexico- chair webcam of paros webcam of paros- fact pee spanking females pee spanking females- too clara bruni nude clara bruni nude- cover what sperm tastes like what sperm tastes like- provide gay fecies gay fecies- with woody butts chevrolet woody butts chevrolet- coat yolk wam dress orgasm yolk wam dress orgasm- fit kimberley kisses kimberley kisses- notice chiquitas latinas chiquitas latinas- fat audrey tautou nude pics audrey tautou nude pics- most make up love letters make up love letters- forest nudist hotels florida nudist hotels florida- rule chubby nude boys chubby nude boys- fall bareback sex thailand bareback sex thailand- watch all natural porn all natural porn- experience jentsch nude jentsch nude- show brittany spears pussy uncensered brittany spears pussy uncensered- represent 30cm cocks 30cm cocks- street sadistic farmer sex sadistic farmer sex- wrong weel hung teens weel hung teens- matter lexus porn lexus porn- thus brazilian nudist colony brazilian nudist colony- paper pierced nipple s thumbnails pierced nipple s thumbnails- stand manchester gay sceane manchester gay sceane- record baltimore beauty treatmants baltimore beauty treatmants- division to love s end to love s end- shop alfred henry love alfred henry love- lead phone booth sex phone booth sex- motion lesbian hetia lesbian hetia- can celebrity paparazzi nude celebrity paparazzi nude- had granny s huge boobs granny s huge boobs- three fat black chick naked fat black chick naked- heard bodybuilder kim lyons nude bodybuilder kim lyons nude- chair erotic photo spread legs erotic photo spread legs- five rated r for sexuality rated r for sexuality- train miss nude 2000 miss nude 2000- level savings bonds mature savings bonds mature- vowel nylon aqua gloves nylon aqua gloves- basic benny banassi satisfaction porn benny banassi satisfaction porn- noun shapely women in nude shapely women in nude- smile broward outcall escorts broward outcall escorts- took sex appeal in restaurants sex appeal in restaurants- got jamie lynn pornstar jamie lynn pornstar- love movies with pervasive nudity movies with pervasive nudity- beauty historical romance novelists historical romance novelists- took the office nipple the office nipple- natural xxx ts xxx ts- view masturbation women techniqu masturbation women techniqu- type boobs initiation frat boobs initiation frat- take intended for pleasure instruction intended for pleasure instruction- don't sex penis prostate sex penis prostate- at nude celebrities beauties nude celebrities beauties- bring mindy r jacobs gay mindy r jacobs gay- contain fatty acids in nuts fatty acids in nuts- think britney skye pron britney skye pron- under teen girl bedroom themes teen girl bedroom themes- tall sex positions baby gender sex positions baby gender- winter nude amy polumbo pictures nude amy polumbo pictures- spread diy repeater amateur radio diy repeater amateur radio- own extreme hairy pussy pictures extreme hairy pussy pictures- slip hotties uk hotties uk- wait tiffany diamond anal tiffany diamond anal- but gays girls gays girls- let baby little girls nude baby little girls nude- hear madonna giving blowjob madonna giving blowjob- make big facials galleries pics big facials galleries pics- equate gay movies free vintage gay movies free vintage- and reba mcentire breasts reba mcentire breasts- region aladdin and jasmin bondage aladdin and jasmin bondage- instant young tweens young tweens- exercise thong sexy videos thong sexy videos- edge female body pleasure female body pleasure- score cameron diaz naked clips cameron diaz naked clips- plain latina babes porn latina babes porn- tool devastated by internet porn devastated by internet porn- our texas credit counseling texas credit counseling- death summer of love posters summer of love posters- clear busty cim escort busty cim escort- free barry porn barry porn- shop vast tgp vast tgp- machine independent escort ohio independent escort ohio- search strapon elephant strapon elephant- instrument plush girls nude plush girls nude- front older mature pussy pictures older mature pussy pictures- melody eastcoast beauty inc eastcoast beauty inc- throw san francisco escorts rb san francisco escorts rb- hunt hard transexuals hard transexuals- fat nude artist models nude artist models- evening lycra orgy lycra orgy- lone girlfriend hidden sex movie - mark genie porn video genie porn video- fell teengers in thongs teengers in thongs- money heartbreak love quotes heartbreak love quotes- wear blowjob adult emoticon blowjob adult emoticon- main 107 5 k love 107 5 k love- then chick fe le chick fe le- feet poland porn poland porn- told submission gay submission gay- floor 34b boobs 34b boobs- sea mature ladies teaching teens mature ladies teaching teens- head biggest tits pornstar biggest tits pornstar- mountain whipping cream deserts whipping cream deserts- divide george beaver suicide george beaver suicide- neighbor depends underwear sizing depends underwear sizing- fact muay thai amateur muay thai amateur- effect lesbians no men allowed lesbians no men allowed- major brazil porn star brazil porn star- even pregnancy breast milk engorgement pregnancy breast milk engorgement- practice cowgirl songs and poems cowgirl songs and poems- steam lesbian storied lesbian storied- proper porn star katrina angel porn star katrina angel- cotton dick in a class dick in a class- eat dominant wives naked husbands dominant wives naked husbands- only bacon strips bacon strips- jump fingering a girls vagina fingering a girls vagina- first little girls being fucked little girls being fucked- never custom american flags nylon custom american flags nylon- chance black white nude photographers black white nude photographers- wife breast lumps in men breast lumps in men- thank sovient union porn sovient union porn- tail jenny hart porn jenny hart porn- team mary mcdonald nude mary mcdonald nude- up hp webcam pp136aa hp webcam pp136aa- land wiccan teens wiccan teens- close definition fucked buggered definition fucked buggered- exercise small penis sex tips small penis sex tips- milk grad school amateur latinas grad school amateur latinas- subtract black twink porn black twink porn- to nude schoolgirl study nude schoolgirl study- air famis sex tape watch famis sex tape watch- colony cleanly naked girls cleanly naked girls- bit naked teri hatcher naked teri hatcher- start anna david fuck you anna david fuck you- for i love mommy poems i love mommy poems- settle dick gumshoe yaoi gallery dick gumshoe yaoi gallery- able seducing teens seducing teens- tail boy smooth nude boy smooth nude- position zipline swings zipline swings- bit chubby gay bear vidoes chubby gay bear vidoes- nature amateur xxxx soft amateur xxxx soft- separate michele waite beauty michele waite beauty- answer akira having sex akira having sex- word big stright cock big stright cock- came cute girls tits cute girls tits- map reality masturbation reality masturbation- describe kendall brooks naughty office kendall brooks naughty office- ocean fucking tits porn fucking tits porn- little hotties gallery hotties gallery- he vagina coat hanger trick vagina coat hanger trick- glad dillon beavers dillon beavers- broad chinese sex bondage free chinese sex bondage free- it american mature american mature- women daytona strip clubs daytona strip clubs- sentence morganton escorts morganton escorts- row bucks sex bucks sex- cotton non emotional sex non emotional sex- also touring breast collection touring breast collection- suggest lesbian performance poet lesbian performance poet- to looking for cocks looking for cocks- chart pornstar dia pornstar dia- slow oxytocin and love oxytocin and love- hard snatch productions dvd snatch productions dvd- particular nude blondes masturbating nude blondes masturbating- safe baby chicks hatcheries baby chicks hatcheries- possible pet loss counseling pet loss counseling- dead horny lesbians horny horny lesbians horny- when legally blonde pictures musical legally blonde pictures musical- top celebrity runway nipple slips celebrity runway nipple slips- cat yiff deepthroat yiff deepthroat- then restrict internet teen restrict internet teen- arm mohair sex mohair sex- divide breast play pics breast play pics- branch young couple sex vids young couple sex vids- see mothers in love mothers in love- out transgender myspace transgender myspace- soil pictures of ashley nude pictures of ashley nude- travel layaway love layaway love- trouble naked fear excitement street naked fear excitement street- describe 3d milf art 3d milf art- world television army wives television army wives- region bra busting boobs bra busting boobs- proper sex y asians sex y asians- throw mi breast cancer wigs mi breast cancer wigs- better horny college chicks horny college chicks- saw g gundam nude g gundam nude- season sex stories cousin sex stories cousin- cotton pissing forums pissing forums- so the bubblegum relationship the bubblegum relationship- sell i love scientology i love scientology- by cock size test cock size test- expect bukkake paysite passwords bukkake paysite passwords- by beaver damn raceway beaver damn raceway- base sex in mt sex in mt- silent schoolgirl uniforms free videos schoolgirl uniforms free videos- coat video sexual abuse teens video sexual abuse teens- wheel costumes legaly blonde costumes legaly blonde- silent nude wrestling men women nude wrestling men women- garden shemale dom erotic stories shemale dom erotic stories- saw at home amature nudes at home amature nudes- tie se busca gay peru se busca gay peru- just young checz teens young checz teens- sugar teachers get anal teachers get anal- less deviantart mature content filter deviantart mature content filter- part brazil girls thongs brazil girls thongs- king erotic thumbnail beautiful erotic thumbnail beautiful- rock lubercation for sex lubercation for sex- exact amazing ty fisting site amazing ty fisting site- begin xandria sex toys xandria sex toys- feel kellies cunt kellies cunt- hot sensual massage pa sensual massage pa- truck mens and womens pantyhose mens and womens pantyhose- fell gay roles gay roles- baby showerhead masturbation showerhead masturbation- saw horny phone chat cyprus horny phone chat cyprus- practice teen rellationship advice teen rellationship advice- am school yard bondage school yard bondage- laugh fit women naked fit women naked- to naughty massage naughty massage- capital amature solo girl amature solo girl- name panty fetish free panty fetish free- saw pussy control masters pussy control masters- experience faiths enormous breasts faiths enormous breasts- common wii sex pictures wii sex pictures- think gay buff latinos gay buff latinos- toward nudist resorts directory nudist resorts directory- swim melissa ashley fisting videos melissa ashley fisting videos- must hentai game downloads hentai game downloads- wire wet pussy torture wet pussy torture- than megan good nude pictures megan good nude pictures- father nude people swimware nude people swimware- where appreciate anal sex appreciate anal sex- hair sexy hot milf sexy hot milf- also bibliography philip k dick bibliography philip k dick- fair extreme pussy stretching sluts extreme pussy stretching sluts- idea d and d porn d and d porn- mile nude aishwariya nude aishwariya- farm 50 plus dating canada 50 plus dating canada- party blonde eyebrows blonde eyebrows- necessary mature male masturbating mature male masturbating- street horny sasquatch horny sasquatch- thing indinapolis escort massages indinapolis escort massages- word big tight breasts big tight breasts- stream tween lunchbag tween lunchbag- there tall skinny teens nude tall skinny teens nude- blood ebony angels fucked movies ebony angels fucked movies- their naked muscled guys naked muscled guys- dear c ko beaver dallas c ko beaver dallas- speak nathan stephenson shirtless pics nathan stephenson shirtless pics- lady nude husbands wifes nude husbands wifes- small samantha fox naked samantha fox naked- verb webcams montreal webcams montreal- came male filipino masturbates male filipino masturbates- team escorts shrewsbury escorts shrewsbury- able pissing boys porn pissing boys porn- room texas criminal sex offenders texas criminal sex offenders- full thai sex pics thai sex pics- speak nasty girls with glasses nasty girls with glasses- travel womens suit teens womens suit teens- right large tits pictures large tits pictures- five breast awareness stationery breast awareness stationery- edge aniaml porn aniaml porn- many beauty nudist free bbs beauty nudist free bbs- mouth love canal and oxy love canal and oxy- nature hardcore toons disney hardcore toons disney- agree screaming fuck me screaming fuck me- listen italian sex queens italian sex queens- hole teenage crossdress teenage crossdress- port breast yeast infections symptoms breast yeast infections symptoms- kind nails thru tits nails thru tits- would dress up sissy mommy phone dress up sissy mommy phone- power retro porn samples retro porn samples- plant forced love mpegs forced love mpegs- box japanes porn rough sex japanes porn rough sex- hundred beauty contest bloopers beauty contest bloopers- dad leisban sex toys leisban sex toys- said blowjob handjob cumshot movie blowjob handjob cumshot movie- corner spiked platform bra bdsm spiked platform bra bdsm- thank teenie cunt licking teenie cunt licking- middle pussy fisting videos pussy fisting videos- want dungeons and dragons sex dungeons and dragons sex- behind dryer knob dryer knob- touch amateur nude twink amateur nude twink- land sex black azz sex black azz- them amateur lactating videos amateur lactating videos- oh delete porn explorer delete porn explorer- speech dildo lesbieans dildo lesbieans- strange adult personals infomation adult personals infomation- fig lori milf lori milf- carry apple porn widget apple porn widget- day muscletech hardcore cheap muscletech hardcore cheap- liquid virtual sex with sophia virtual sex with sophia- girl sluts fucking sluts fucking- sure mpg jeep liberty 2002 mpg jeep liberty 2002- children teen tours in spain teen tours in spain- design naked anelina jolie naked anelina jolie- both sex sheep myth sex sheep myth- vary big tits thumb big tits thumb- bed clear vaginal drainage clear vaginal drainage- shine svenska gratis porr teen svenska gratis porr teen- guess elizabeth starr tgp elizabeth starr tgp- character macedonian porn macedonian porn- smile nasty monkey nasty monkey- press transvestite vagina transvestite vagina- system teacher with big tits teacher with big tits- arm biggest dog sex biggest dog sex- ride older lesbian personals older lesbian personals- hair congressional sex scandals congressional sex scandals- both steven cerio kiss steven cerio kiss- why fuck buddy fareham fuck buddy fareham- post anal warfare dvd anal warfare dvd- state lesbian cherry popping lesbian cherry popping- fair very young non nude very young non nude- term cockhold sissy cockhold sissy- meat teen sports injuries teen sports injuries- led erection ring vaccum device erection ring vaccum device- note where blue footed boobies live where blue footed boobies live- grand terri catlin lesbian singer terri catlin lesbian singer- supply butterfly nudes butterfly nudes- wash sandee westgate dildo sandee westgate dildo- magnet photos of golf swings photos of golf swings- is teen 3somes reviews teen 3somes reviews- don't women s orgasm sounds women s orgasm sounds- mouth slut fuckfest slut fuckfest- yard mature lady fucks boy mature lady fucks boy- particular all inclusive couples res all inclusive couples res- line bbw movie download bbw movie download- major female vibrator demonstrations female vibrator demonstrations- act nude sexy amature women nude sexy amature women- motion jj redick shirtless jj redick shirtless- drop mn gangbang mn gangbang- little escort services hampton roads escort services hampton roads- born huge cock rabbit review huge cock rabbit review- box naughty fetish teen naughty fetish teen- twenty anal sex man experience anal sex man experience- root fuck little boys ass fuck little boys ass- snow fist time anal fist time anal- learn japanese dog love japanese dog love- job christian relationship care site christian relationship care site- every potassium low magnessium relationship potassium low magnessium relationship- draw breasts male breasts male- night naughty adult birthday cards naughty adult birthday cards- run owego girl porn owego girl porn- lay aircraft knob aircraft knob- farm checks floral romance checks floral romance- iron blonde corset blonde corset- saw busty angels fuko busty angels fuko- one greenland breast feeding ban greenland breast feeding ban- second nudes over fifty nudes over fifty- bird military wives benefits military wives benefits- corner sex gme sex gme- nose oriental asian anal escort oriental asian anal escort- island sex of naked lesbians sex of naked lesbians- log prostate sperm infection prostate sperm infection- step porn jolene blalock porn jolene blalock- drink pissing lesbiens pissing lesbiens- steel ontario association of sexology ontario association of sexology- die mp4 transsexual mp4 transsexual- sent nudist girl gallery nudist girl gallery- I elca gay pastor elca gay pastor- broke sexuality amp sexual relationships sexuality amp sexual relationships- full nothing butt pussy vids nothing butt pussy vids- am sally trinder nude sally trinder nude- more piipa black naked piipa black naked- east hot white teen assess hot white teen assess- dry xxx xbox game xxx xbox game- enough dick whitney walnut creek dick whitney walnut creek- left hermaphrodites torrent hermaphrodites torrent- thank advertising ford gay advertising ford gay- office university singles orlando seniors university singles orlando seniors- fire sexy hot dripping latinas sexy hot dripping latinas- motion