2003-12-30 04:31:13 -05:00
< ? php
2008-08-14 02:30:38 -04: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 .
*
2011-06-29 12:50:07 -04:00
* @ internal This file must be parsable by PHP4 .
*
2008-08-14 02:30:38 -04:00
* @ package WordPress
* @ subpackage Administration
*/
/**
* We are installing .
*
* @ package WordPress
*/
2005-03-17 18:34:06 -05:00
define ( 'WP_INSTALLING' , true );
2008-10-12 13:40:20 -04:00
2010-02-13 21:47:45 -05:00
/**
* We are blissfully unaware of anything .
*/
define ( 'WP_SETUP_CONFIG' , true );
2009-11-05 13:01:57 -05:00
/**
* Disable error reporting
*
2010-01-08 13:40:00 -05:00
* Set this to error_reporting ( E_ALL ) or error_reporting ( E_ALL | E_STRICT ) for debugging
2009-11-05 13:01:57 -05:00
*/
2010-05-03 03:12:26 -04:00
error_reporting ( 0 );
2009-11-05 13:01:57 -05:00
2008-10-12 13:40:20 -04: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 04:18:33 -04:00
define ( 'ABSPATH' , dirname ( dirname ( __FILE__ )) . '/' );
define ( 'WPINC' , 'wp-includes' );
2008-07-02 13:03:55 -04:00
define ( 'WP_CONTENT_DIR' , ABSPATH . 'wp-content' );
2010-01-15 17:03:41 -05:00
define ( 'WP_DEBUG' , false );
2008-10-12 13:40:20 -04:00
/**#@-*/
2004-01-12 05:18:25 -05:00
2010-01-15 17:03:41 -05:00
require_once ( ABSPATH . WPINC . '/load.php' );
2011-06-29 12:46:46 -04:00
require_once ( ABSPATH . WPINC . '/version.php' );
wp_check_php_mysql_versions ();
2011-04-07 11:47:04 -04:00
require_once ( ABSPATH . WPINC . '/compat.php' );
2009-05-12 12:47:49 -04:00
require_once ( ABSPATH . WPINC . '/functions.php' );
2010-10-30 03:02:06 -04:00
require_once ( ABSPATH . WPINC . '/class-wp-error.php' );
2007-09-19 00:27:56 -04:00
2009-05-12 12:47:49 -04:00
if ( ! file_exists ( ABSPATH . 'wp-config-sample.php' ))
2007-09-19 00:27:56 -04: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 17:59:31 -05:00
2012-01-06 13:23:51 -05:00
$config_file = file ( ABSPATH . 'wp-config-sample.php' );
2004-02-11 16:59:18 -05:00
2007-09-19 00:27:56 -04:00
// Check if wp-config.php has been created
2009-05-12 12:47:49 -04:00
if ( file_exists ( ABSPATH . 'wp-config.php' ))
2007-09-19 00:27:56 -04: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 02:42:14 -05:00
2009-03-04 14:30:16 -05:00
// Check if wp-config.php exists above the root directory but is not part of another install
2009-05-12 12:47:49 -04:00
if ( file_exists ( ABSPATH . '../wp-config.php' ) && ! file_exists ( ABSPATH . '../wp-settings.php' ))
2008-05-21 01:59:27 -04: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> " );
2006-04-01 17:59:31 -05:00
if ( isset ( $_GET [ 'step' ]))
$step = $_GET [ 'step' ];
else
$step = 0 ;
2007-09-19 00:27:56 -04:00
2008-08-14 02:30:38 -04:00
/**
* Display setup wp - config . php file header .
*
2008-10-10 14:21:16 -04:00
* @ ignore
* @ since 2.3 . 0
2008-08-14 02:30:38 -04:00
* @ package WordPress
* @ subpackage Installer_WP_Config
*/
function display_header () {
2007-09-19 00:27:56 -04:00
header ( 'Content-Type: text/html; charset=utf-8' );
2006-04-01 17:59:31 -05:00
?>
2011-07-21 20:25:41 -04:00
<! DOCTYPE html >
2003-12-30 04:31:13 -05:00
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head >
2004-08-30 03:16:40 -04:00
< meta http - equiv = " Content-Type " content = " text/html; charset=utf-8 " />
2008-01-06 14:15:33 -05:00
< title > WordPress & rsaquo ; Setup Configuration File </ title >
2008-10-13 20:18:41 -04:00
< link rel = " stylesheet " href = " css/install.css " type = " text/css " />
2008-01-06 14:15:33 -05:00
2003-12-30 04:31:13 -05:00
</ head >
2006-04-01 17:59:31 -05:00
< body >
< h1 id = " logo " >< img alt = " WordPress " src = " images/wordpress-logo.png " /></ h1 >
2003-12-30 04:31:13 -05:00
< ? php
2007-09-19 00:27:56 -04:00
} //end function display_header();
2003-12-30 04:31:13 -05:00
switch ( $step ) {
case 0 :
2007-09-19 00:27:56 -04:00
display_header ();
2006-11-19 02:56:05 -05: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 03:02:46 -04: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 01:53:23 -04: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 18:55:11 -05:00
2010-02-19 15:56:16 -05: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 04:31:13 -05:00
< ? php
break ;
case 1 :
2007-09-19 00:27:56 -04:00
display_header ();
2006-11-19 02:56:05 -05:00
?>
2006-04-01 17:59:31 -05:00
< form method = " post " action = " setup-config.php?step=2 " >
2006-11-19 02:56:05 -05:00
< p > Below you should enter your database connection details . If you ' re not sure about these , contact your host . </ p >
2008-02-23 23:33:10 -05:00
< table class = " form-table " >
2006-11-19 02:56:05 -05:00
< tr >
2008-05-04 06:37:06 -04: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 02:56:05 -05:00
< td > The name of the database you want to run WP in . </ td >
</ tr >
< tr >
2008-05-04 06:37:06 -04: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 02:56:05 -05:00
< td > Your MySQL username </ td >
</ tr >
< tr >
2008-05-04 06:37:06 -04:00
< th scope = " row " >< label for = " pwd " > Password </ label ></ th >
< td >< input name = " pwd " id = " pwd " type = " text " size = " 25 " value = " password " /></ td >
2011-11-15 10:47:07 -05:00
< td >... and your MySQL password .</ td >
2006-11-19 02:56:05 -05:00
</ tr >
< tr >
2008-05-04 06:37:06 -04: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 10:21:34 -05: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 02:56:05 -05:00
</ tr >
< tr >
2008-05-04 06:37:06 -04:00
< th scope = " row " >< label for = " prefix " > Table Prefix </ label ></ th >
2011-07-31 18:20:06 -04:00
< td >< input name = " prefix " id = " prefix " type = " text " value = " wp_ " size = " 25 " /></ td >
2006-11-19 02:56:05 -05:00
< td > If you want to run multiple WordPress installations in a single database , change this .</ td >
</ tr >
</ table >
2010-02-19 15:56:16 -05:00
< ? php if ( isset ( $_GET [ 'noapi' ] ) ) { ?> <input name="noapi" type="hidden" value="true" /><?php } ?>
2010-10-28 20:31:27 -04:00
< p class = " step " >< input name = " submit " type = " submit " value = " Submit " class = " button " /></ p >
2006-11-19 02:56:05 -05:00
</ form >
2003-12-30 04:31:13 -05:00
< ? php
break ;
2006-02-12 02:53:23 -05:00
2003-12-30 04:31:13 -05:00
case 2 :
2005-11-24 23:36:03 -05:00
$dbname = trim ( $_POST [ 'dbname' ]);
2006-11-19 02:56:05 -05:00
$uname = trim ( $_POST [ 'uname' ]);
$passwrd = trim ( $_POST [ 'pwd' ]);
$dbhost = trim ( $_POST [ 'dbhost' ]);
2005-11-24 23:36:03 -05:00
$prefix = trim ( $_POST [ 'prefix' ]);
2010-03-27 21:57:45 -04:00
if ( empty ( $prefix ) )
$prefix = 'wp_' ;
2010-05-03 16:26:11 -04:00
// 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 05:18:25 -05:00
2006-11-19 02:56:05 -05:00
// Test the db connection.
2008-10-12 13:40:20 -04:00
/** #@+
* @ ignore
*/
2006-11-19 02:56:05 -05:00
define ( 'DB_NAME' , $dbname );
define ( 'DB_USER' , $uname );
define ( 'DB_PASSWORD' , $passwrd );
define ( 'DB_HOST' , $dbhost );
2008-10-12 13:40:20 -04:00
/**#@-*/
2004-01-12 05:18:25 -05:00
2006-11-19 02:56:05 -05:00
// We'll fail here if the values are no good.
2007-10-06 04:18:33 -04:00
require_wp_db ();
2010-12-08 02:12:44 -05:00
if ( ! empty ( $wpdb -> error ) ) {
$back = '<p class="step"><a href="setup-config.php?step=1" onclick="javascript:history.go(-1);return false;" class="button">Try Again</a></p>' ;
wp_die ( $wpdb -> error -> get_error_message () . $back );
}
2007-12-19 21:10:09 -05:00
2010-02-19 15:56:16 -05:00
// Fetch or generate keys and salts.
$no_api = isset ( $_POST [ 'noapi' ] );
2010-02-08 13:15:44 -05:00
require_once ( ABSPATH . WPINC . '/plugin.php' );
2010-03-09 07:03:13 -05:00
require_once ( ABSPATH . WPINC . '/l10n.php' );
require_once ( ABSPATH . WPINC . '/pomo/translations.php' );
2010-02-19 15:56:16 -05:00
if ( ! $no_api ) {
2010-04-13 18:35:39 -04:00
require_once ( ABSPATH . WPINC . '/class-http.php' );
2010-02-19 15:56:16 -05:00
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 13:15:44 -05:00
}
2010-02-19 15:56:16 -05:00
if ( $no_api || is_wp_error ( $secret_keys ) ) {
2010-02-13 21:47:45 -05:00
$secret_keys = array ();
require_once ( ABSPATH . WPINC . '/pluggable.php' );
2010-03-06 16:01:58 -05:00
for ( $i = 0 ; $i < 8 ; $i ++ ) {
2010-02-13 23:06:30 -05:00
$secret_keys [] = wp_generate_password ( 64 , true , true );
2010-03-06 16:01:58 -05:00
}
2010-02-13 21:47:45 -05:00
} else {
2010-02-08 13:15:44 -05:00
$secret_keys = explode ( " \n " , wp_remote_retrieve_body ( $secret_keys ) );
2010-03-06 16:01:58 -05:00
foreach ( $secret_keys as $k => $v ) {
2010-02-13 21:47:45 -05:00
$secret_keys [ $k ] = substr ( $v , 28 , 64 );
2010-03-06 16:01:58 -05:00
}
2010-02-13 21:47:45 -05:00
}
2012-01-06 13:23:51 -05:00
2010-02-08 13:15:44 -05:00
$key = 0 ;
2012-01-06 13:23:51 -05:00
foreach ( $config_file as & $line ) {
if ( '$table_prefix =' == substr ( $line , 0 , 16 ) ) {
$line = '$table_prefix = \'' . $prefix . " '; \r \n " ;
continue ;
}
2010-02-08 13:15:44 -05:00
2012-01-06 13:23:51 -05:00
if ( ! preg_match ( '/^define\(\'([A-Z_]+)\',([ ]+)/' , $line , $match ) )
continue ;
$constant = $match [ 1 ];
$padding = $match [ 2 ];
switch ( $constant ) {
case 'DB_NAME' :
case 'DB_USER' :
case 'DB_PASSWORD' :
case 'DB_HOST' :
$line = " define(' " . $constant . " ', " . $padding . " ' " . constant ( $constant ) . " '); \r \n " ;
2003-12-30 04:31:13 -05:00
break ;
2012-01-06 13:23:51 -05:00
case 'AUTH_KEY' :
case 'SECURE_AUTH_KEY' :
case 'LOGGED_IN_KEY' :
case 'NONCE_KEY' :
case 'AUTH_SALT' :
case 'SECURE_AUTH_SALT' :
case 'LOGGED_IN_SALT' :
case 'NONCE_SALT' :
$line = " define(' " . $constant . " ', " . $padding . " ' " . $secret_keys [ $key ++ ] . " '); \r \n " ;
2010-02-08 13:15:44 -05:00
break ;
2006-11-19 02:56:05 -05:00
}
}
2012-01-06 13:23:51 -05:00
unset ( $line );
2009-07-09 17:35:47 -04: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 >
2010-03-28 07:26:06 -04:00
< textarea cols = " 98 " rows = " 15 " class = " code " >< ? php
2012-01-06 13:23:51 -05:00
foreach ( $config_file as $line ) {
2010-01-08 13:40:00 -05:00
echo htmlentities ( $line , ENT_COMPAT , 'UTF-8' );
2009-07-09 17:35:47 -04: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' );
2012-01-06 13:23:51 -05:00
foreach ( $config_file as $line ) {
2009-07-09 17:35:47 -04:00
fwrite ( $handle , $line );
}
fclose ( $handle );
chmod ( ABSPATH . 'wp-config.php' , 0666 );
display_header ();
2006-11-19 02:56:05 -05:00
?>
2008-02-21 18:55:11 -05: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 12:59:17 -04:00
< p class = " step " >< a href = " install.php " class = " button " > Run the install </ a ></ p >
2003-12-30 04:31:13 -05:00
< ? php
2009-07-09 17:35:47 -04:00
endif ;
2003-12-30 04:31:13 -05:00
break ;
}
2006-04-01 17:59:31 -05:00
?>
2003-12-30 04:31:13 -05:00
</ body >
</ html >