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
2012-01-26 15:34:27 -05:00
require ( ABSPATH . WPINC . '/load.php' );
require ( ABSPATH . WPINC . '/version.php' );
// Also loads functions.php, plugin.php, l10n.php, pomo/mo.php (all required by setup-config.php)
wp_load_translations_early ();
2012-04-16 17:52:02 -04:00
// Check for the required PHP version and for the MySQL extension or a database drop-in.
2011-06-29 12:46:46 -04:00
wp_check_php_mysql_versions ();
2012-04-16 17:52:02 -04:00
// Turn register_globals off.
wp_unregister_GLOBALS ();
2011-04-07 11:47:04 -04:00
require_once ( ABSPATH . WPINC . '/compat.php' );
2010-10-30 03:02:06 -04:00
require_once ( ABSPATH . WPINC . '/class-wp-error.php' );
2012-04-16 17:52:02 -04:00
require_once ( ABSPATH . WPINC . '/formatting.php' );
// Add magic quotes and set up $_REQUEST ( $_GET + $_POST )
wp_magic_quotes ();
2007-09-19 00:27:56 -04:00
2012-01-26 15:34:27 -05:00
if ( ! file_exists ( ABSPATH . 'wp-config-sample.php' ) )
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
2012-01-26 15:34:27 -05:00
if ( file_exists ( ABSPATH . 'wp-config.php' ) )
wp_die ( '<p>' . sprintf ( __ ( " 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='%s'>installing now</a>. " ), 'install.php' ) . '</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
2012-01-26 15:34:27 -05:00
if ( file_exists ( ABSPATH . '../wp-config.php' ) && ! file_exists ( ABSPATH . '../wp-settings.php' ) )
wp_die ( '<p>' . sprintf ( __ ( " 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>. " ), 'install.php' ) . '</p>' );
2008-05-21 01:59:27 -04:00
2012-01-26 15:34:27 -05:00
$step = isset ( $_GET [ 'step' ] ) ? ( int ) $_GET [ '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 () {
2012-01-30 12:37:13 -05:00
global $wp_version ;
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 >
2012-02-08 00:55:54 -05:00
< html xmlns = " http://www.w3.org/1999/xhtml " < ? php if ( is_rtl () ) echo ' dir="rtl"' ; ?> >
2003-12-30 04:31:13 -05:00
< head >
2004-08-30 03:16:40 -04:00
< meta http - equiv = " Content-Type " content = " text/html; charset=utf-8 " />
2012-01-26 15:34:27 -05:00
< title >< ? php _e ( 'WordPress › Setup Configuration File' ); ?> </title>
2012-01-30 12:49:50 -05:00
< link rel = " stylesheet " href = " css/install.css?ver=<?php echo preg_replace( '/[^0-9a-z \ .-]/i', '', $wp_version ); ?> " type = " text/css " />
2008-01-06 14:15:33 -05:00
2003-12-30 04:31:13 -05:00
</ head >
2012-02-08 00:55:54 -05:00
< body < ? php if ( is_rtl () ) echo ' class="rtl"' ; ?> >
2012-02-16 23:57:56 -05:00
< h1 id = " logo " >< img alt = " WordPress " src = " images/wordpress-logo.png?ver=20120216 " /></ 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
?>
2012-01-26 15:34:27 -05:00
< p >< ? php _e ( 'Welcome to WordPress. Before getting started, we need some information on the database. You will need to know the following items before proceeding.' ) ?> </p>
2006-11-19 02:56:05 -05:00
< ol >
2012-01-26 15:34:27 -05:00
< li >< ? php _e ( 'Database name' ); ?> </li>
< li >< ? php _e ( 'Database username' ); ?> </li>
< li >< ? php _e ( 'Database password' ); ?> </li>
< li >< ? php _e ( 'Database host' ); ?> </li>
< li >< ? php _e ( 'Table prefix (if you want to run more than one WordPress in a single database)' ); ?> </li>
2006-11-19 02:56:05 -05:00
</ ol >
2012-01-26 15:34:27 -05:00
< p >< strong >< ? php _e ( " 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>
< 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
2012-01-26 15:34:27 -05:00
< p class = " step " >< a href = " setup-config.php?step=1<?php if ( isset( $_GET['noapi'] ) ) echo '&noapi'; ?> " class = " button " >< ? php _e ( 'Let’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 " >
2012-01-26 15:34:27 -05:00
< p >< ? php _e ( " 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 >
2012-01-26 15:34:27 -05:00
< th scope = " row " >< label for = " dbname " >< ? php _e ( 'Database Name' ); ?> </label></th>
2008-05-04 06:37:06 -04:00
< td >< input name = " dbname " id = " dbname " type = " text " size = " 25 " value = " wordpress " /></ td >
2012-01-26 15:34:27 -05:00
< td >< ? php _e ( 'The name of the database you want to run WP in.' ); ?> </td>
2006-11-19 02:56:05 -05:00
</ tr >
< tr >
2012-01-26 15:34:27 -05:00
< th scope = " row " >< label for = " uname " >< ? php _e ( 'User Name' ); ?> </label></th>
< td >< input name = " uname " id = " uname " type = " text " size = " 25 " value = " <?php echo htmlspecialchars( _x( 'username', 'example username' ), ENT_QUOTES ); ?> " /></ td >
< td >< ? php _e ( 'Your MySQL username' ); ?> </td>
2006-11-19 02:56:05 -05:00
</ tr >
< tr >
2012-01-26 15:34:27 -05:00
< th scope = " row " >< label for = " pwd " >< ? php _e ( 'Password' ); ?> </label></th>
< td >< input name = " pwd " id = " pwd " type = " text " size = " 25 " value = " <?php echo htmlspecialchars( _x( 'password', 'example password' ), ENT_QUOTES ); ?> " /></ td >
< td >< ? php _e ( '…and your MySQL password.' ); ?> </td>
2006-11-19 02:56:05 -05:00
</ tr >
< tr >
2012-01-26 15:34:27 -05:00
< th scope = " row " >< label for = " dbhost " >< ? php _e ( 'Database Host' ); ?> </label></th>
2008-05-04 06:37:06 -04:00
< td >< input name = " dbhost " id = " dbhost " type = " text " size = " 25 " value = " localhost " /></ td >
2012-01-26 15:34:27 -05:00
< td >< ? php _e ( '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 >
2012-01-26 15:34:27 -05:00
< th scope = " row " >< label for = " prefix " >< ? php _e ( '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 >
2012-01-26 15:34:27 -05:00
< td >< ? php _e ( 'If you want to run multiple WordPress installations in a single database, change this.' ); ?> </td>
2006-11-19 02:56:05 -05:00
</ tr >
</ table >
2012-01-26 15:34:27 -05:00
< ? php if ( isset ( $_GET [ 'noapi' ] ) ) { ?> <input name="noapi" type="hidden" value="1" /><?php } ?>
< p class = " step " >< input name = " submit " type = " submit " value = " <?php echo htmlspecialchars( __( 'Submit' ), ENT_QUOTES ); ?> " 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 ) )
2012-01-26 15:34:27 -05:00
wp_die ( __ ( '<strong>ERROR</strong>: "Table Prefix" can only contain numbers, letters, and underscores.' ) );
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 ) ) {
2012-01-26 15:34:27 -05:00
$back = '<p class="step"><a href="setup-config.php?step=1" onclick="javascript:history.go(-1);return false;" class="button">' . __ ( 'Try Again' ) . '</a></p>' ;
2010-12-08 02:12:44 -05:00
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' ] );
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 ();
?>
2012-01-26 15:34:27 -05:00
< p >< ? php _e ( " Sorry, but I can't write the <code>wp-config.php</code> file. " ); ?> </p>
< p >< ? php _e ( '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>
2012-01-26 15:34:27 -05:00
< p >< ? php _e ( 'After you\'ve done that, click "Run the install."' ); ?> </p>
< p class = " step " >< a href = " install.php " class = " button " >< ? php _e ( 'Run the install' ); ?> </a></p>
2009-07-09 17:35:47 -04:00
< ? 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
?>
2012-01-26 15:34:27 -05:00
< p >< ? php _e ( " 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… " ); ?> </p>
2008-02-21 18:55:11 -05:00
2012-01-26 15:34:27 -05:00
< p class = " step " >< a href = " install.php " class = " button " >< ? php _e ( '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 >