2003-12-30 09:31:13 +00:00
< ? php
2008-08-14 06:30:38 +00:00
/**
* Retrieves and creates the wp - config . php file .
*
* The permissions for the base directory must allow for writing files in order
* for the wp - config . php to be created using this page .
*
* @ package WordPress
* @ subpackage Administration
*/
/**
* We are installing .
*
* @ package WordPress
*/
2005-03-17 23:34:06 +00:00
define ( 'WP_INSTALLING' , true );
2008-10-12 17:40:20 +00:00
2010-02-14 02:47:45 +00:00
/**
* We are blissfully unaware of anything .
*/
define ( 'WP_SETUP_CONFIG' , true );
2009-11-05 18:01:57 +00:00
/**
* Disable error reporting
*
2010-01-08 18:40:00 +00:00
* Set this to error_reporting ( E_ALL ) or error_reporting ( E_ALL | E_STRICT ) for debugging
2009-11-05 18:01:57 +00:00
*/
error_reporting ( 0 );
2008-10-12 17:40:20 +00:00
/** #@+
* These three defines are required to allow us to use require_wp_db () to load
* the database class while being wp - content / db . php aware .
* @ ignore
*/
2007-10-06 08:18:33 +00:00
define ( 'ABSPATH' , dirname ( dirname ( __FILE__ )) . '/' );
define ( 'WPINC' , 'wp-includes' );
2008-07-02 17:03:55 +00:00
define ( 'WP_CONTENT_DIR' , ABSPATH . 'wp-content' );
2010-01-15 22:03:41 +00:00
define ( 'WP_DEBUG' , false );
2008-10-12 17:40:20 +00:00
/**#@-*/
2004-01-12 10:18:25 +00:00
2010-01-15 22:03:41 +00:00
require_once ( ABSPATH . WPINC . '/load.php' );
2009-05-12 16:47:49 +00:00
require_once ( ABSPATH . WPINC . '/compat.php' );
require_once ( ABSPATH . WPINC . '/functions.php' );
require_once ( ABSPATH . WPINC . '/classes.php' );
2010-02-03 21:38:09 +00:00
require_once ( ABSPATH . WPINC . '/version.php' );
2007-09-19 04:27:56 +00:00
2009-05-12 16:47:49 +00:00
if ( ! file_exists ( ABSPATH . 'wp-config-sample.php' ))
2007-09-19 04:27:56 +00:00
wp_die ( 'Sorry, I need a wp-config-sample.php file to work from. Please re-upload this file from your WordPress installation.' );
2006-04-01 22:59:31 +00:00
2009-05-12 16:47:49 +00:00
$configFile = file ( ABSPATH . 'wp-config-sample.php' );
2004-02-11 21:59:18 +00:00
2007-09-19 04:27:56 +00:00
// Check if wp-config.php has been created
2009-05-12 16:47:49 +00:00
if ( file_exists ( ABSPATH . 'wp-config.php' ))
2007-09-19 04:27:56 +00:00
wp_die ( " <p>The file 'wp-config.php' already exists. If you need to reset any of the configuration items in this file, please delete it first. You may try <a href='install.php'>installing now</a>.</p> " );
2006-03-14 07:42:14 +00:00
2009-03-04 19:30:16 +00:00
// Check if wp-config.php exists above the root directory but is not part of another install
2009-05-12 16:47:49 +00:00
if ( file_exists ( ABSPATH . '../wp-config.php' ) && ! file_exists ( ABSPATH . '../wp-settings.php' ))
2008-05-21 05:59:27 +00:00
wp_die ( " <p>The file 'wp-config.php' already exists one level above your WordPress installation. If you need to reset any of the configuration items in this file, please delete it first. You may try <a href='install.php'>installing now</a>.</p> " );
2010-02-03 21:38:09 +00:00
if ( version_compare ( $required_php_version , phpversion (), '>' ) )
wp_die ( sprintf ( /*WP_I18N_OLD_PHP*/ 'Your server is running PHP version %1$s but WordPress requires at least %2$s.' /*/WP_I18N_OLD_PHP*/ , phpversion (), $required_php_version ) );
2009-11-20 04:11:01 +00:00
if ( ! extension_loaded ( 'mysql' ) && ! file_exists ( ABSPATH . 'wp-content/db.php' ) )
wp_die ( /*WP_I18N_OLD_MYSQL*/ 'Your PHP installation appears to be missing the MySQL extension which is required by WordPress.' /*/WP_I18N_OLD_MYSQL*/ );
2006-04-01 22:59:31 +00:00
if ( isset ( $_GET [ 'step' ]))
$step = $_GET [ 'step' ];
else
$step = 0 ;
2007-09-19 04:27:56 +00:00
2008-08-14 06:30:38 +00:00
/**
* Display setup wp - config . php file header .
*
2008-10-10 18:21:16 +00:00
* @ ignore
* @ since 2.3 . 0
2008-08-14 06:30:38 +00:00
* @ package WordPress
* @ subpackage Installer_WP_Config
*/
function display_header () {
2007-09-19 04:27:56 +00:00
header ( 'Content-Type: text/html; charset=utf-8' );
2006-04-01 22:59:31 +00:00
?>
2003-12-30 09:31:13 +00:00
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head >
2004-08-30 07:16:40 +00:00
< meta http - equiv = " Content-Type " content = " text/html; charset=utf-8 " />
2008-01-06 19:15:33 +00:00
< title > WordPress & rsaquo ; Setup Configuration File </ title >
2008-10-14 00:18:41 +00:00
< link rel = " stylesheet " href = " css/install.css " type = " text/css " />
2008-01-06 19:15:33 +00:00
2003-12-30 09:31:13 +00:00
</ head >
2006-04-01 22:59:31 +00:00
< body >
< h1 id = " logo " >< img alt = " WordPress " src = " images/wordpress-logo.png " /></ h1 >
2003-12-30 09:31:13 +00:00
< ? php
2007-09-19 04:27:56 +00:00
} //end function display_header();
2003-12-30 09:31:13 +00:00
switch ( $step ) {
case 0 :
2007-09-19 04:27:56 +00:00
display_header ();
2006-11-19 07:56:05 +00:00
?>
< p > Welcome to WordPress . Before getting started , we need some information on the database . You will need to know the following items before proceeding .</ p >
< ol >
< li > Database name </ li >
< li > Database username </ li >
< li > Database password </ li >
< li > Database host </ li >
< li > Table prefix ( if you want to run more than one WordPress in a single database ) </ li >
</ ol >
2004-05-21 07:02:46 +00:00
< p >< strong > If for any reason this automatic file creation doesn 't work, don' t worry . All this does is fill in the database information to a configuration file . You may also simply open < code > wp - config - sample . php </ code > in a text editor , fill in your information , and save it as < code > wp - config . php </ code >. </ strong ></ p >
2008-09-14 05:53:23 +00:00
< p > In all likelihood , these items were supplied to you by your Web Host . If you do not have this information , then you will need to contact them before you can continue . If you & #8217;re all ready…</p>
2008-02-21 23:55:11 +00:00
2010-02-19 20:56:16 +00:00
< p class = " step " >< a href = " setup-config.php?step=1<?php if ( isset( $_GET['noapi'] ) ) echo '&noapi'; ?> " class = " button " > Let & #8217;s go!</a></p>
2003-12-30 09:31:13 +00:00
< ? php
break ;
case 1 :
2007-09-19 04:27:56 +00:00
display_header ();
2006-11-19 07:56:05 +00:00
?>
2006-04-01 22:59:31 +00:00
< form method = " post " action = " setup-config.php?step=2 " >
2006-11-19 07:56:05 +00:00
< p > Below you should enter your database connection details . If you ' re not sure about these , contact your host . </ p >
2008-02-24 04:33:10 +00:00
< table class = " form-table " >
2006-11-19 07:56:05 +00:00
< tr >
2008-05-04 10:37:06 +00:00
< th scope = " row " >< label for = " dbname " > Database Name </ label ></ th >
< td >< input name = " dbname " id = " dbname " type = " text " size = " 25 " value = " wordpress " /></ td >
2006-11-19 07:56:05 +00:00
< td > The name of the database you want to run WP in . </ td >
</ tr >
< tr >
2008-05-04 10:37:06 +00:00
< th scope = " row " >< label for = " uname " > User Name </ label ></ th >
< td >< input name = " uname " id = " uname " type = " text " size = " 25 " value = " username " /></ td >
2006-11-19 07:56:05 +00:00
< td > Your MySQL username </ td >
</ tr >
< tr >
2008-05-04 10:37:06 +00:00
< th scope = " row " >< label for = " pwd " > Password </ label ></ th >
< td >< input name = " pwd " id = " pwd " type = " text " size = " 25 " value = " password " /></ td >
2006-11-19 07:56:05 +00:00
< td >... and MySQL password .</ td >
</ tr >
< tr >
2008-05-04 10:37:06 +00:00
< th scope = " row " >< label for = " dbhost " > Database Host </ label ></ th >
< td >< input name = " dbhost " id = " dbhost " type = " text " size = " 25 " value = " localhost " /></ td >
2010-02-15 15:21:34 +00:00
< td > You should be able to get this info from your web host , if < code > localhost </ code > does not work .</ td >
2006-11-19 07:56:05 +00:00
</ tr >
< tr >
2008-05-04 10:37:06 +00:00
< th scope = " row " >< label for = " prefix " > Table Prefix </ label ></ th >
< td >< input name = " prefix " id = " prefix " type = " text " id = " prefix " value = " wp_ " size = " 25 " /></ td >
2006-11-19 07:56:05 +00:00
< td > If you want to run multiple WordPress installations in a single database , change this .</ td >
</ tr >
</ table >
2010-02-19 20:56:16 +00:00
< ? php if ( isset ( $_GET [ 'noapi' ] ) ) { ?> <input name="noapi" type="hidden" value="true" /><?php } ?>
2008-07-10 16:59:17 +00:00
< p class = " step " >< input name = " submit " type = " submit " value = " Submit " class = " button " /></ p >
2006-11-19 07:56:05 +00:00
</ form >
2003-12-30 09:31:13 +00:00
< ? php
break ;
2006-02-12 07:53:23 +00:00
2003-12-30 09:31:13 +00:00
case 2 :
2005-11-25 04:36:03 +00:00
$dbname = trim ( $_POST [ 'dbname' ]);
2006-11-19 07:56:05 +00:00
$uname = trim ( $_POST [ 'uname' ]);
$passwrd = trim ( $_POST [ 'pwd' ]);
$dbhost = trim ( $_POST [ 'dbhost' ]);
2005-11-25 04:36:03 +00:00
$prefix = trim ( $_POST [ 'prefix' ]);
2010-03-28 01:57:45 +00:00
if ( empty ( $prefix ) )
$prefix = 'wp_' ;
// Validate $prefix: it can only contain letters, numbers and underscores
if ( preg_match ( '|[^a-z0-9_]|i' , $prefix ) )
wp_die ( /*WP_I18N_BAD_PREFIX*/ '<strong>ERROR</strong>: "Table Prefix" can only contain numbers, letters, and underscores.' /*/WP_I18N_BAD_PREFIX*/ );
2004-01-12 10:18:25 +00:00
2006-11-19 07:56:05 +00:00
// Test the db connection.
2008-10-12 17:40:20 +00:00
/** #@+
* @ ignore
*/
2006-11-19 07:56:05 +00:00
define ( 'DB_NAME' , $dbname );
define ( 'DB_USER' , $uname );
define ( 'DB_PASSWORD' , $passwrd );
define ( 'DB_HOST' , $dbhost );
2008-10-12 17:40:20 +00:00
/**#@-*/
2004-01-12 10:18:25 +00:00
2006-11-19 07:56:05 +00:00
// We'll fail here if the values are no good.
2007-10-06 08:18:33 +00:00
require_wp_db ();
2007-12-20 02:10:09 +00:00
if ( ! empty ( $wpdb -> error ) )
wp_die ( $wpdb -> error -> get_error_message ());
2010-02-19 20:56:16 +00:00
// Fetch or generate keys and salts.
$no_api = isset ( $_POST [ 'noapi' ] );
2010-02-08 18:15:44 +00:00
require_once ( ABSPATH . WPINC . '/plugin.php' );
2010-03-09 12:03:13 +00:00
require_once ( ABSPATH . WPINC . '/l10n.php' );
require_once ( ABSPATH . WPINC . '/pomo/translations.php' );
2010-02-19 20:56:16 +00:00
if ( ! $no_api ) {
require_once ( ABSPATH . WPINC . '/http.php' );
wp_fix_server_vars ();
/** #@+
* @ ignore
*/
function get_bloginfo () {
return ( ( is_ssl () ? 'https://' : 'http://' ) . $_SERVER [ 'HTTP_HOST' ] . str_replace ( $_SERVER [ 'PHP_SELF' ], '/wp-admin/setup-config.php' , '' ) );
}
/**#@-*/
$secret_keys = wp_remote_get ( 'https://api.wordpress.org/secret-key/1.1/salt/' );
2010-02-08 18:15:44 +00:00
}
2010-02-19 20:56:16 +00:00
if ( $no_api || is_wp_error ( $secret_keys ) ) {
2010-02-14 02:47:45 +00:00
$secret_keys = array ();
require_once ( ABSPATH . WPINC . '/pluggable.php' );
2010-03-06 21:01:58 +00:00
for ( $i = 0 ; $i < 8 ; $i ++ ) {
2010-02-14 04:06:30 +00:00
$secret_keys [] = wp_generate_password ( 64 , true , true );
2010-03-06 21:01:58 +00:00
}
2010-02-14 02:47:45 +00:00
} else {
2010-02-08 18:15:44 +00:00
$secret_keys = explode ( " \n " , wp_remote_retrieve_body ( $secret_keys ) );
2010-03-06 21:01:58 +00:00
foreach ( $secret_keys as $k => $v ) {
2010-02-14 02:47:45 +00:00
$secret_keys [ $k ] = substr ( $v , 28 , 64 );
2010-03-06 21:01:58 +00:00
}
2010-02-14 02:47:45 +00:00
}
2010-02-08 18:15:44 +00:00
$key = 0 ;
2006-11-19 07:56:05 +00:00
foreach ( $configFile as $line_num => $line ) {
switch ( substr ( $line , 0 , 16 )) {
case " define('DB_NAME' " :
2010-03-27 05:42:08 +00:00
$configFile [ $line_num ] = str_replace ( " database_name_here " , $dbname , $line );
2006-11-19 07:56:05 +00:00
break ;
case " define('DB_USER' " :
2010-03-27 05:42:08 +00:00
$configFile [ $line_num ] = str_replace ( " 'username_here' " , " ' $uname ' " , $line );
2006-11-19 07:56:05 +00:00
break ;
case " define('DB_PASSW " :
2010-03-27 05:42:08 +00:00
$configFile [ $line_num ] = str_replace ( " 'password_here' " , " ' $passwrd ' " , $line );
2006-11-19 07:56:05 +00:00
break ;
case " define('DB_HOST' " :
2009-07-09 21:35:47 +00:00
$configFile [ $line_num ] = str_replace ( " localhost " , $dbhost , $line );
2006-11-19 07:56:05 +00:00
break ;
2003-12-31 23:51:41 +00:00
case '$table_prefix =' :
2009-07-09 21:35:47 +00:00
$configFile [ $line_num ] = str_replace ( 'wp_' , $prefix , $line );
2003-12-30 09:31:13 +00:00
break ;
2010-02-08 18:15:44 +00:00
case " define('AUTH_KEY " :
case " define('SECURE_A " :
case " define('LOGGED_I " :
case " define('NONCE_KE " :
case " define('AUTH_SAL " :
case " define('SECURE_A " :
case " define('LOGGED_I " :
case " define('NONCE_SA " :
2010-02-14 02:47:45 +00:00
$configFile [ $line_num ] = str_replace ( 'put your unique phrase here' , $secret_keys [ $key ++ ], $line );
2010-02-08 18:15:44 +00:00
break ;
2006-11-19 07:56:05 +00:00
}
}
2009-07-09 21:35:47 +00:00
if ( ! is_writable ( ABSPATH ) ) :
display_header ();
?>
< p > Sorry , but I can ' t write the < code > wp - config . php </ code > file .</ p >
< p > You can create the < code > wp - config . php </ code > manually and paste the following text into it .</ p >
< textarea cols = " 90 " rows = " 15 " >< ? php
foreach ( $configFile as $line ) {
2010-01-08 18:40:00 +00:00
echo htmlentities ( $line , ENT_COMPAT , 'UTF-8' );
2009-07-09 21:35:47 +00:00
}
?> </textarea>
< p > After you ' ve done that , click " Run the install. " </ p >
< p class = " step " >< a href = " install.php " class = " button " > Run the install </ a ></ p >
< ? php
else :
$handle = fopen ( ABSPATH . 'wp-config.php' , 'w' );
foreach ( $configFile as $line ) {
fwrite ( $handle , $line );
}
fclose ( $handle );
chmod ( ABSPATH . 'wp-config.php' , 0666 );
display_header ();
2006-11-19 07:56:05 +00:00
?>
2008-02-21 23:55:11 +00:00
< p > All right sparky ! You ' ve made it through this part of the installation . WordPress can now communicate with your database . If you are ready , time now to & hellip ; </ p >
2008-07-10 16:59:17 +00:00
< p class = " step " >< a href = " install.php " class = " button " > Run the install </ a ></ p >
2003-12-30 09:31:13 +00:00
< ? php
2009-07-09 21:35:47 +00:00
endif ;
2003-12-30 09:31:13 +00:00
break ;
}
2006-04-01 22:59:31 +00:00
?>
2003-12-30 09:31:13 +00:00
</ body >
</ html >