, 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 ); } 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; } $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 = mw_get_session_save_path(); $ssp = htmlspecialchars( $sessionSavePath ); # Warn the user if it's not set, but let them proceed if( !$sessionSavePath ) { print "
  • Warning: A value for session.save_path has not been set in PHP.ini. If the default value causes problems with saving session data, set it to a valid path which is read/write/execute for the user your web server is running under.
  • "; } elseif ( is_dir( $sessionSavePath ) && is_writable( $sessionSavePath ) ) { # All good? Let the user know print "
  • Session save path ({$ssp}) appears to be valid.
  • "; } else { # Something not right? Warn the user, but let them proceed print "
  • Warning: Your session.save_path value ({$ssp}) appears to be invalid or is not writable. PHP needs to be able to save data to this location for correct session operation.
  • "; } # Check for PCRE support if( !function_exists( 'preg_match' ) ) dieout( "The PCRE support module appears to be missing. MediaWiki requires the Perl-compatible regular expression functions." ); $memlimit = ini_get( "memory_limit" ); $conf->raiseMemory = false; if( empty( $memlimit ) || $memlimit == -1 ) { print "
  • PHP is configured with no memory_limit.
  • \n"; } else { print "
  • PHP's memory_limit is " . htmlspecialchars( $memlimit ) . ". "; $n = intval( $memlimit ); if( preg_match( '/^([0-9]+)[Mm]$/', trim( $memlimit ), $m ) ) { $n = intval( $m[1] * (1024*1024) ); } if( $n < 20*1024*1024 ) { print "Attempting to raise limit to 20M... "; if( false === ini_set( "memory_limit", "20M" ) ) { print "failed.
    " . htmlspecialchars( $memlimit ) . " seems too low, installation may fail!"; } else { $conf->raiseMemory = true; print "ok."; } } print "
  • \n"; } $conf->turck = function_exists( 'mmcache_get' ); if ( $conf->turck ) { print "
  • Turck MMCache installed
  • \n"; } $conf->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. 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->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']}\"; \$wgDBport = \"{$slconf['DBport']}\"; \$wgDBprefix = \"{$slconf['DBprefix']}\"; # MySQL table options to use during installation or update \$wgDBTableOptions = \"{$slconf['DBTableOptions']}\"; # 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; {$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.

    sea food restaurants in washington dc

    sea food restaurants in washington dc

    market chcolate cake recipes

    chcolate cake recipes

    less popular italian meals

    popular italian meals

    valley cornbread hardtack recipes

    cornbread hardtack recipes

    neighbor bulk food store florida venice

    bulk food store florida venice

    ease pat obrien s hurricane recipe

    pat obrien s hurricane recipe

    rich food city phoenix az

    food city phoenix az

    matter dinner meal ideas under 500 calories

    dinner meal ideas under 500 calories

    discuss great salsa recipe

    great salsa recipe

    happy beet and ginger recipe

    beet and ginger recipe

    bought recipe poppyseed torte

    recipe poppyseed torte

    pitch recipe for glaze for a ham

    recipe for glaze for a ham

    size australian foods safe for peanut allergies

    australian foods safe for peanut allergies

    arm raspberry chesse pie recipe

    raspberry chesse pie recipe

    pair melamine china pet foods

    melamine china pet foods

    come suite river bed breakfast

    suite river bed breakfast

    give chicken apealing food

    chicken apealing food

    need food for dancerss

    food for dancerss

    few sophie grigson baking recipes

    sophie grigson baking recipes

    position australian food online sales

    australian food online sales

    make drambui drinks

    drambui drinks

    beat honduras breakfast

    honduras breakfast

    group phai thai recipe

    phai thai recipe

    mountain cooking with kenny oh

    cooking with kenny oh

    must naturally preffered foods

    naturally preffered foods

    send igf 1 foods

    igf 1 foods

    ran london e13 food hall restaurants

    london e13 food hall restaurants

    picture phoenix food delivery

    phoenix food delivery

    flow cheesesteak sub recipe

    cheesesteak sub recipe

    party new dill pickle recipes

    new dill pickle recipes

    whole sara lee pound cake recipe

    sara lee pound cake recipe

    hard foods of oklahoma

    foods of oklahoma

    safe recipes mm

    recipes mm

    go cheap picnic games

    cheap picnic games

    strong recipes high in protien

    recipes high in protien

    music food pyramid of 2005

    food pyramid of 2005

    position feeling of food stuck

    feeling of food stuck

    station recipe blondie

    recipe blondie

    egg food poisoning sushi

    food poisoning sushi

    brother recipes start with a cake mix

    recipes start with a cake mix

    their gerber baby food bulk

    gerber baby food bulk

    wash rosehaven bed breakfast butler pa

    rosehaven bed breakfast butler pa

    him discount food boise idaho

    discount food boise idaho

    wear honey roasted bbq sauce recipe

    honey roasted bbq sauce recipe

    here lunch appointment time afternoon area

    lunch appointment time afternoon area

    roll turkey recipes for leftovers

    turkey recipes for leftovers

    course immune boosting juicing recipes

    immune boosting juicing recipes

    behind dinner package in las vegas

    dinner package in las vegas

    against greek antipasto recipe

    greek antipasto recipe

    wrong bed breakfast cleburne texas

    bed breakfast cleburne texas

    allow chicken dianne recipe

    chicken dianne recipe

    we identify kitchen and food bacteria

    identify kitchen and food bacteria

    moon beets cooking

    beets cooking

    spot lower your triglycerides with natural foods

    lower your triglycerides with natural foods

    prove restaurants overseas good thai thailand food

    restaurants overseas good thai thailand food

    took soda drinks made from splenda

    soda drinks made from splenda

    yes moroccon breakfeast foods

    moroccon breakfeast foods

    enough food network orange chicken

    food network orange chicken

    shall pork crown roast recipes

    pork crown roast recipes

    line recipes grams 1 ounce

    recipes grams 1 ounce

    soldier green bean almadine recipe

    green bean almadine recipe

    gas food rep jobs

    food rep jobs

    appear population food supply us

    population food supply us

    same food safety certification illinois

    food safety certification illinois

    yard italian lamb recipes

    italian lamb recipes

    excite recipes rhubarb

    recipes rhubarb

    stop meals on wheels glendale california

    meals on wheels glendale california

    simple intitle food supplement filetype txt

    intitle food supplement filetype txt

    an cooking classes in chicago

    cooking classes in chicago

    meant natural balance dog food recal

    natural balance dog food recal

    said scrapbooking on recipes

    scrapbooking on recipes

    car meals at san gabriel mission

    meals at san gabriel mission

    equate ks food

    ks food

    wide bbq pork chop recipe

    bbq pork chop recipe

    chair hiv aids and food security

    hiv aids and food security

    need genetically modified foods versus organic

    genetically modified foods versus organic

    shape newlywed foods chicago il

    newlywed foods chicago il

    stand meals delivered ocala

    meals delivered ocala

    fall barbecue dinner party decorations

    barbecue dinner party decorations

    perhaps ingredients in proplan cat food

    ingredients in proplan cat food

    name cheddar chili egg casserole recipe

    cheddar chili egg casserole recipe

    war seattle wa food co op

    seattle wa food co op

    fig kung po sauce recipe

    kung po sauce recipe

    coast oregon coast bed breakfast

    oregon coast bed breakfast

    next del monte peach recipe

    del monte peach recipe

    star delaware and recipes

    delaware and recipes

    late backpackers recipes

    backpackers recipes

    ride coffee pecan brownies recipe

    coffee pecan brownies recipe

    hand copper bed and breakfast

    copper bed and breakfast

    effect personalized recipe for love throw

    personalized recipe for love throw

    fair low fat orange muffin recipe

    low fat orange muffin recipe

    fire burger bun recipe

    burger bun recipe

    teeth blueberry cookie recipes

    blueberry cookie recipes

    city recipe ed wood s sourdough bread

    recipe ed wood s sourdough bread

    heat specialty food tour

    specialty food tour

    mile butyric acid foods

    butyric acid foods

    finger oberto beef jerky recipe

    oberto beef jerky recipe

    magnet breakfast near greenport ny

    breakfast near greenport ny

    ocean canada food plan weight loss program

    canada food plan weight loss program

    block marshmallow recipe books

    marshmallow recipe books

    same foods good for fibromyalgia

    foods good for fibromyalgia

    he mid evil time food

    mid evil time food

    his recipe for chocolate profiteroles

    recipe for chocolate profiteroles

    equal outdoor food warmers

    outdoor food warmers

    truck recipe cooking equivalents

    recipe cooking equivalents

    short walt s food stores

    walt s food stores

    common grilled lamb chop recipes

    grilled lamb chop recipes

    parent recipes for cheeseballs

    recipes for cheeseballs

    very food service deleivery in atlanta

    food service deleivery in atlanta

    got recipe isabella salad

    recipe isabella salad

    kind bag craft lunch

    bag craft lunch

    did organic valley family of foods website

    organic valley family of foods website

    drink recipes for speckled trout

    recipes for speckled trout

    nor grilled red potato recipes

    grilled red potato recipes

    blue lobster recipe casserole

    lobster recipe casserole

    send food causes of swollen nasal passages

    food causes of swollen nasal passages

    near scottish shortbread recipe green tea

    scottish shortbread recipe green tea

    mix cheesecake cupcakes recipe

    cheesecake cupcakes recipe

    symbol miners lunch bucket

    miners lunch bucket

    object british bacon food

    british bacon food

    separate recipe using potatoes jalapeno and beans

    recipe using potatoes jalapeno and beans

    tire strawberry milkshake recipe

    strawberry milkshake recipe

    form food poisoning cookies

    food poisoning cookies

    might food grade tubing

    food grade tubing

    the food metaphors

    food metaphors

    fight recipe for vanilla sugar

    recipe for vanilla sugar

    blue joy pet foods

    joy pet foods

    die faro recipes

    faro recipes

    some organic food spring green wi

    organic food spring green wi

    boat list of foods and carbs

    list of foods and carbs

    little breakfast club coupons

    breakfast club coupons

    effect state food from alabama

    state food from alabama

    molecule pet food menu food symptoms

    pet food menu food symptoms

    surface bite and chew food sound effect

    bite and chew food sound effect

    gray adult themed recipes

    adult themed recipes

    parent minute meal

    minute meal

    clothe german butterball potatoes recipes

    german butterball potatoes recipes

    provide newlywed foods chicago il

    newlywed foods chicago il

    lake recipes for making fresh pack pickles

    recipes for making fresh pack pickles

    reply science diet dog food recalll

    science diet dog food recalll

    similar savannah international food festival

    savannah international food festival

    distant pumping food chunks

    pumping food chunks

    me moroccan tomato salad recipe

    moroccan tomato salad recipe

    travel global foods belleville

    global foods belleville

    clothe meal service for disabled

    meal service for disabled

    believe krogers publix walmart food circulars

    krogers publix walmart food circulars

    root food for football stand

    food for football stand

    went inside out cheeseburger recipe

    inside out cheeseburger recipe

    near cajuan fish recipe

    cajuan fish recipe

    world philippine sweet and sour chicken recipe

    philippine sweet and sour chicken recipe

    block oprah s low fat chicken recipe

    oprah s low fat chicken recipe

    grass recipe chicken noodle casserole

    recipe chicken noodle casserole

    like food hygiene training lincoln

    food hygiene training lincoln

    desert ice pack for lunch coolers

    ice pack for lunch coolers

    gave dr abady food

    dr abady food

    pick recipe beef tips and rice

    recipe beef tips and rice

    heard macaroni and chees patti labelle recipe

    macaroni and chees patti labelle recipe

    division brown rice bread recipes

    brown rice bread recipes

    include 24 hour chinese food

    24 hour chinese food

    locate barbecue tri tip recipe

    barbecue tri tip recipe

    floor pakistani dessert recipe

    pakistani dessert recipe

    after chorizo hash brown breakfast recipe

    chorizo hash brown breakfast recipe

    surface smoked samon quesdilla recipe

    smoked samon quesdilla recipe

    food recipe black pudding

    recipe black pudding

    perhaps bird food recipe

    bird food recipe

    press amaranth recipe

    amaranth recipe

    sleep iams healthy naturals dog food

    iams healthy naturals dog food

    win bolillo recipe

    bolillo recipe

    drop jamaican rice recipe

    jamaican rice recipe

    picture baked crab recipe

    baked crab recipe

    property tri v pet foods ltd

    tri v pet foods ltd

    oh easy recipe for macaroni cheese

    easy recipe for macaroni cheese

    send timber rose bed breakfast

    timber rose bed breakfast

    give cruise dinner seine

    cruise dinner seine

    bear west allis food pantry

    west allis food pantry

    how bed and breakfast versailles ky

    bed and breakfast versailles ky

    ease microbiotic recipes

    microbiotic recipes

    wind wellness pet food packets

    wellness pet food packets

    joy the dinner party adult film

    the dinner party adult film

    grand guiness recipe

    guiness recipe

    head pet food recall types and brands

    pet food recall types and brands

    count need information about chinese food

    need information about chinese food

    room relay for life 2007 dinner

    relay for life 2007 dinner

    skin bed and breakfast in towson maryland

    bed and breakfast in towson maryland

    win pet food sales bussiness for sale

    pet food sales bussiness for sale

    start quick ayurveda recipes

    quick ayurveda recipes

    mountain rachel ray s 30 minute breakfast appetizers

    rachel ray s 30 minute breakfast appetizers

    mine whole foods stores in cookeville tennessee

    whole foods stores in cookeville tennessee

    write indian food in connecticut

    indian food in connecticut

    mile steak dinner clip art

    steak dinner clip art

    table everyday food mag vol 1

    everyday food mag vol 1

    glass what foods do japanese people eat

    what foods do japanese people eat

    moon super food secrets

    super food secrets

    floor japanese school lunch

    japanese school lunch

    feel culinary arts job profile

    culinary arts job profile

    had health food affiliate programs

    health food affiliate programs

    finish food saver vacume

    food saver vacume

    last sugared almonds recipe

    sugared almonds recipe

    north organic food production

    organic food production

    love recipes for broiling

    recipes for broiling

    arrive philadelphia bed and breakfast

    philadelphia bed and breakfast

    many food additives and health harmful

    food additives and health harmful

    sentence remedy too spicy food

    remedy too spicy food

    catch steak with peppercorn sauce recipe

    steak with peppercorn sauce recipe

    feet humans need food to survive

    humans need food to survive

    example huevos rancheros recipes

    huevos rancheros recipes

    melody simulation of disribution of world s food

    simulation of disribution of world s food

    mother spiral sliced honey ham recipes

    spiral sliced honey ham recipes

    station grunwald p land bed and breakfast

    grunwald p land bed and breakfast

    note food measurment conversion

    food measurment conversion

    early hydrilla recipes

    hydrilla recipes

    fresh queen s health food store

    queen s health food store

    sudden vegetabel pasta primavera recipes

    vegetabel pasta primavera recipes

    picture junk food advertisements and profits

    junk food advertisements and profits

    valley food handler certification online

    food handler certification online

    character energy drinks and school

    energy drinks and school

    gone food procesor attachments

    food procesor attachments

    fear cook s country recipes free kitchen test

    cook s country recipes free kitchen test

    fruit wheat glutton in foods

    wheat glutton in foods

    box fast food delivery franconia va

    fast food delivery franconia va

    character haunted bed breakfast

    haunted bed breakfast

    letter setting a romantic dinner table

    setting a romantic dinner table

    silent jam recipe small batch

    jam recipe small batch

    feel blueberry muffin recipe with frozen blueberries

    blueberry muffin recipe with frozen blueberries

    column recipes for children with diabetes

    recipes for children with diabetes

    point dog food liver

    dog food liver

    fat cosmo s food

    cosmo s food

    moon corn and spaghetti casserole recipe

    corn and spaghetti casserole recipe

    written lyrics for food saftey song

    lyrics for food saftey song

    name recipe for malt extract

    recipe for malt extract

    bar jeff todd secret recipes

    jeff todd secret recipes

    brought quail and dove recipes

    quail and dove recipes

    probable birmingham after rehearsal dinner

    birmingham after rehearsal dinner

    current cooking in large quanities

    cooking in large quanities

    stay email marketing game recipe

    email marketing game recipe

    water culinary schools librarian

    culinary schools librarian

    near food safety promotional items

    food safety promotional items

    sure natural food naperville

    natural food naperville

    lost spring ham pineapple bites recipe

    spring ham pineapple bites recipe

    farm cloned foods

    cloned foods

    girl moldy food refrigerator

    moldy food refrigerator

    heavy costa rica food culture tradition

    costa rica food culture tradition

    radio pack lunch snacks

    pack lunch snacks

    field dog food recall gluten symptoms

    dog food recall gluten symptoms

    well kohlrabi leaf recipe

    kohlrabi leaf recipe

    dog award food coupon

    award food coupon

    ride kong lunch

    kong lunch

    sun roast recipe using opinion soup mix

    roast recipe using opinion soup mix

    speech lemon madeleines recipe

    lemon madeleines recipe

    ring meal plans for two

    meal plans for two

    machine jam making recipes in tropics

    jam making recipes in tropics

    student english recipes in the 1500s

    english recipes in the 1500s

    match silly putty recipe cornstarch

    silly putty recipe cornstarch

    populate central pa thansgiving dinner out

    central pa thansgiving dinner out

    power good recipes for lactose intolerance

    good recipes for lactose intolerance

    pose london ontario restaurants for breakfast

    london ontario restaurants for breakfast

    east recipe for southern pecan pancakes

    recipe for southern pecan pancakes

    noise home cooked dog meals

    home cooked dog meals

    material absolute mandarin recipe

    absolute mandarin recipe

    right lebaneese food festival

    lebaneese food festival

    wrong recipes from sadui arabia

    recipes from sadui arabia

    idea simple family meals

    simple family meals

    two foods gluetin free

    foods gluetin free

    morning tuscan farm dinners with italian families

    tuscan farm dinners with italian families

    picture mini cheesecake recipe with vanilla waffers

    mini cheesecake recipe with vanilla waffers

    example food of the gods recipe

    food of the gods recipe

    room foods that help an ulser

    foods that help an ulser

    game recipe tenderloin tips

    recipe tenderloin tips

    forest challah recipe with apples and cinnamon

    challah recipe with apples and cinnamon

    control honeybaked ham mandarin pineapple salad recipe

    honeybaked ham mandarin pineapple salad recipe

    crowd socioeconomic impact on food choices

    socioeconomic impact on food choices

    from vegetable cake recipe

    vegetable cake recipe

    control egg roll wrapper recipes

    egg roll wrapper recipes

    tie cocktail wienie recipe

    cocktail wienie recipe

    play san jose adult entertainment lunch specials

    san jose adult entertainment lunch specials

    farm broiled rabbit leg recipe

    broiled rabbit leg recipe

    voice cat o nine tails recipe

    cat o nine tails recipe

    afraid no cook appetizer recipes

    no cook appetizer recipes

    true . recipes for frozen spinach

    recipes for frozen spinach

    off food influences of the 1920s

    food influences of the 1920s

    bright low cholesterol dinner

    low cholesterol dinner

    stop three day pickle recipe

    three day pickle recipe

    noon golden temple food hall

    golden temple food hall

    whole at home spa recipes

    at home spa recipes

    joy birthday food ideas for kids

    birthday food ideas for kids

    ship healthy basil mozzarella tomato recipe

    healthy basil mozzarella tomato recipe

    also artichoke meals

    artichoke meals

    term melting mama food drink product reviews

    melting mama food drink product reviews

    shoulder state dinner

    state dinner

    sleep chefs choice food slicer

    chefs choice food slicer

    farm australian aborginal food recipes

    australian aborginal food recipes

    suit brigham young seven years food storage

    brigham young seven years food storage

    language easy date recipes

    easy date recipes

    please sandwich with butter spread recipe

    sandwich with butter spread recipe

    appear recipes ingredent serch

    recipes ingredent serch

    grew indian recipes potatoes

    indian recipes potatoes

    gun ancient greek food ancient greece food

    ancient greek food ancient greece food

    agree western family foods animal testing

    western family foods animal testing

    company gringos fast food

    gringos fast food

    gentle caffeine free drinks

    caffeine free drinks

    perhaps delux breakfast at mc donalds

    delux breakfast at mc donalds

    show jimmie squares recipe

    jimmie squares recipe

    white yogurt cheescake recipe

    yogurt cheescake recipe

    compare foods originating in the tropical rainforest

    foods originating in the tropical rainforest

    allow organic cole slaw recipe

    organic cole slaw recipe

    soldier cheesey seafood dip recipe

    cheesey seafood dip recipe

    syllable recipes made with chardonnay

    recipes made with chardonnay

    excite recipe chicken noodle casserole

    recipe chicken noodle casserole

    push pecan flour recipes

    pecan flour recipes

    sleep kapampangan recipes

    kapampangan recipes

    mine tomato onion cucumber salad recipe

    tomato onion cucumber salad recipe

    only lowe s foods

    lowe s foods

    until children s alliance breakfast

    children s alliance breakfast

    eat aj food stores

    aj food stores

    suit russian spiced tea recipe

    russian spiced tea recipe

    skill recipe substitution for poi

    recipe substitution for poi

    real gooey bbq chicken recipes

    gooey bbq chicken recipes

    slip daily protein needs and food

    daily protein needs and food

    seed is thai food fattening

    is thai food fattening

    colony vangogh espresso drink recipes

    vangogh espresso drink recipes

    though homemade space food

    homemade space food

    as heart healthy vegeatrian recipes

    heart healthy vegeatrian recipes

    drive foods herbs for erectile dysfunction

    foods herbs for erectile dysfunction

    cat good chili recipes

    good chili recipes

    tone slow cooker recipes and beef

    slow cooker recipes and beef

    main butter icing recipe

    butter icing recipe

    wave israeli holiday foods

    israeli holiday foods

    hot sugar on food network

    sugar on food network

    window food stuck in esphagus

    food stuck in esphagus

    season chinese food or japanese food

    chinese food or japanese food

    piece gourmet carmel corn recipe

    gourmet carmel corn recipe

    right bed breakfast oahu north shore

    bed breakfast oahu north shore

    under left over spaghetti sauce recipes

    left over spaghetti sauce recipes

    school old thanksgiving recipes

    old thanksgiving recipes

    still recipe sugarfree gummi bear

    recipe sugarfree gummi bear

    space karen caron cooking vancouver

    karen caron cooking vancouver

    join boneless spareribs recipe

    boneless spareribs recipe

    had davis county food handlers permit

    davis county food handlers permit

    table food chains savannah

    food chains savannah

    consonant petvalu cat food health diet

    petvalu cat food health diet

    together bobby flay cooking show

    bobby flay cooking show

    start food packaging box mfg

    food packaging box mfg

    burn parmasan crusted halibut recipe

    parmasan crusted halibut recipe

    always food take with pill

    food take with pill

    excite homemade hummingbird food

    homemade hummingbird food

    wear lime fluffy pie recipe

    lime fluffy pie recipe

    kind cheap ham boiled dinner recipe

    cheap ham boiled dinner recipe

    left introductory food science course

    introductory food science course

    family easy chicken broth soup recipes

    easy chicken broth soup recipes

    fun rival electric home food slicer

    rival electric home food slicer

    describe unusual foods from around the world

    unusual foods from around the world

    path catalina beef fritos recipe

    catalina beef fritos recipe

    class no blender smoothie recipes

    no blender smoothie recipes

    arm brazilian food churrasqueria

    brazilian food churrasqueria

    box foods to avoid with diarrhea

    foods to avoid with diarrhea

    electric chicken easy recipes

    chicken easy recipes

    clean wedgewood inn bed breakfast newhope pa

    wedgewood inn bed breakfast newhope pa

    exact culinary cooking schools texas

    culinary cooking schools texas

    instrument food pyramid webquest kindergarten

    food pyramid webquest kindergarten

    nor cake recipes made from mixes

    cake recipes made from mixes

    got meals pre made

    meals pre made

    special seattle sutton recipes

    seattle sutton recipes

    part recipes of yeast bread

    recipes of yeast bread

    since art of food and wine

    art of food and wine

    material cooking yuca

    cooking yuca

    blue food channel triple x

    food channel triple x

    spend health food stores in peoria arizona

    health food stores in peoria arizona

    stretch timeline popular american foods

    timeline popular american foods

    egg food resources of mexico

    food resources of mexico

    land bono s national prayer breakfast

    bono s national prayer breakfast

    neighbor cooking class nyc

    cooking class nyc

    never chopped vegetables recipes

    chopped vegetables recipes

    total apple martinis recipe

    apple martinis recipe

    necessary balsamic vinegar pear apple salad recipe

    balsamic vinegar pear apple salad recipe

    appear online hungarian food and imports

    online hungarian food and imports

    describe non reactive cooking

    non reactive cooking

    unit sugar reef caribbean cookbook recipe excerpt

    sugar reef caribbean cookbook recipe excerpt

    observe st patrick s day green food

    st patrick s day green food

    half melongene recipes

    melongene recipes

    check iowa sales tax food

    iowa sales tax food

    east hershey foods corp hershey pa

    hershey foods corp hershey pa

    one constipated kitten recipe

    constipated kitten recipe

    arm pickled meat recipes

    pickled meat recipes

    always carlito s foods naples fl

    carlito s foods naples fl

    mean florida kindergarten cooking recipe

    florida kindergarten cooking recipe

    ocean bizarre foods travel channel

    bizarre foods travel channel

    segment food dehydrator make your own

    food dehydrator make your own

    where recipe great barbecued hamberger

    recipe great barbecued hamberger

    run sauces for salmon filet recipe

    sauces for salmon filet recipe

    be alabama food program stamp

    alabama food program stamp

    enough dancing lunch menu

    dancing lunch menu

    table spinach stuffed fillet recipes

    spinach stuffed fillet recipes

    chair acidic basic foods

    acidic basic foods

    coast chinese date recipe

    chinese date recipe

    bit recipe for steak bites

    recipe for steak bites

    eight roasting oven cooking

    roasting oven cooking

    caught recipes pumpkin pie filling

    recipes pumpkin pie filling

    collect ass kicking hot corn bread recipes

    ass kicking hot corn bread recipes

    busy low fat and low carb foods

    low fat and low carb foods

    rock picnic grill rental west michigan

    picnic grill rental west michigan

    ship cranberry relish recipes dry cranberries

    cranberry relish recipes dry cranberries

    quotient easy recipe for coney sauce

    easy recipe for coney sauce

    language english recipes translated to french

    english recipes translated to french

    these walworth county food pantry

    walworth county food pantry

    slip food grade chitosan bulk

    food grade chitosan bulk

    bright granite view crepes breakfast nc

    granite view crepes breakfast nc

    liquid food from ancient times

    food from ancient times

    speed whole foods thanksgiving menu

    whole foods thanksgiving menu

    play recipe for gobbs cookies

    recipe for gobbs cookies

    fig barbecue dinner party decorations

    barbecue dinner party decorations

    during hills w d dog food

    hills w d dog food

    nation medieval chicken pie recipe

    medieval chicken pie recipe

    throw girl scout tea party food

    girl scout tea party food

    beauty burton foods supply chain director

    burton foods supply chain director

    log nesbitt mississippi bed breakfast

    nesbitt mississippi bed breakfast

    check rubarb recipe

    rubarb recipe

    property pauls pet foods austin

    pauls pet foods austin

    arm stone ground corn meal north carolina

    stone ground corn meal north carolina

    mine food industries in chandigarh

    food industries in chandigarh

    over oktoberfest food recipes

    oktoberfest food recipes

    station breakfast supplement

    breakfast supplement

    may reno health food restraurants

    reno health food restraurants

    course recipes with the word flip

    recipes with the word flip

    baby la cantina dinner transportable

    la cantina dinner transportable

    row boeuf en daube recipe

    boeuf en daube recipe

    problem recipe for cinnamon chicken

    recipe for cinnamon chicken

    safe food gets caught in throut

    food gets caught in throut

    dog recipe for chipped beef tortilla rollups

    recipe for chipped beef tortilla rollups

    south bento box laptop lunch

    bento box laptop lunch

    animal pampered chef free recipes

    pampered chef free recipes

    broke chicken spaghetti with green olive recipe

    chicken spaghetti with green olive recipe

    body recipe to make apple butter outside

    recipe to make apple butter outside

    strange healthy meal ideas for children

    healthy meal ideas for children

    product canning salmon recipe

    canning salmon recipe

    level history of cooking light magazine

    history of cooking light magazine

    bank kahuku garlic shrimp recipe

    kahuku garlic shrimp recipe

    brother pictures of mexican food from argentina

    pictures of mexican food from argentina

    hunt quick dinner recipes for children

    quick dinner recipes for children

    vary culinary art clubs

    culinary art clubs

    consider homeade pasta recipes

    homeade pasta recipes

    numeral singapore mooncake recipe

    singapore mooncake recipe

    quick shrimp satly recipe

    shrimp satly recipe

    ear belachan okra recipe

    belachan okra recipe

    reply