web/wp-admin/setup-config.php
author ymh <ymh.work@gmail.com>
Mon, 22 Mar 2010 16:36:28 +0100
changeset 5 ac511f1ccc8e
parent 1 0d28b7c10758
permissions -rw-r--r--
add hgignore
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
0d28b7c10758 First commit
ymh
parents:
diff changeset
     1
<?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
     2
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
     3
 * Retrieves and creates the wp-config.php file.
0d28b7c10758 First commit
ymh
parents:
diff changeset
     4
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
     5
 * The permissions for the base directory must allow for writing files in order
0d28b7c10758 First commit
ymh
parents:
diff changeset
     6
 * for the wp-config.php to be created using this page.
0d28b7c10758 First commit
ymh
parents:
diff changeset
     7
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
     8
 * @package WordPress
0d28b7c10758 First commit
ymh
parents:
diff changeset
     9
 * @subpackage Administration
0d28b7c10758 First commit
ymh
parents:
diff changeset
    10
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    11
0d28b7c10758 First commit
ymh
parents:
diff changeset
    12
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
    13
 * We are installing.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    14
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    15
 * @package WordPress
0d28b7c10758 First commit
ymh
parents:
diff changeset
    16
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    17
define('WP_INSTALLING', true);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    18
0d28b7c10758 First commit
ymh
parents:
diff changeset
    19
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
    20
 * Disable error reporting
0d28b7c10758 First commit
ymh
parents:
diff changeset
    21
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    22
 * Set this to error_reporting( E_ALL ) or error_reporting( E_ALL | E_STRICT ) f
0d28b7c10758 First commit
ymh
parents:
diff changeset
    23
or debugging
0d28b7c10758 First commit
ymh
parents:
diff changeset
    24
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    25
error_reporting(0);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    26
0d28b7c10758 First commit
ymh
parents:
diff changeset
    27
/**#@+
0d28b7c10758 First commit
ymh
parents:
diff changeset
    28
 * These three defines are required to allow us to use require_wp_db() to load
0d28b7c10758 First commit
ymh
parents:
diff changeset
    29
 * the database class while being wp-content/db.php aware.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    30
 * @ignore
0d28b7c10758 First commit
ymh
parents:
diff changeset
    31
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    32
define('ABSPATH', dirname(dirname(__FILE__)).'/');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    33
define('WPINC', 'wp-includes');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    34
define('WP_CONTENT_DIR', ABSPATH . 'wp-content');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    35
/**#@-*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
    36
0d28b7c10758 First commit
ymh
parents:
diff changeset
    37
require_once(ABSPATH . WPINC . '/compat.php');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    38
require_once(ABSPATH . WPINC . '/functions.php');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    39
require_once(ABSPATH . WPINC . '/classes.php');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    40
0d28b7c10758 First commit
ymh
parents:
diff changeset
    41
if (!file_exists(ABSPATH . 'wp-config-sample.php'))
0d28b7c10758 First commit
ymh
parents:
diff changeset
    42
	wp_die('Sorry, I need a wp-config-sample.php file to work from. Please re-upload this file from your WordPress installation.');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    43
0d28b7c10758 First commit
ymh
parents:
diff changeset
    44
$configFile = file(ABSPATH . 'wp-config-sample.php');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    45
0d28b7c10758 First commit
ymh
parents:
diff changeset
    46
// Check if wp-config.php has been created
0d28b7c10758 First commit
ymh
parents:
diff changeset
    47
if (file_exists(ABSPATH . 'wp-config.php'))
0d28b7c10758 First commit
ymh
parents:
diff changeset
    48
	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>");
0d28b7c10758 First commit
ymh
parents:
diff changeset
    49
0d28b7c10758 First commit
ymh
parents:
diff changeset
    50
// Check if wp-config.php exists above the root directory but is not part of another install
0d28b7c10758 First commit
ymh
parents:
diff changeset
    51
if (file_exists(ABSPATH . '../wp-config.php') && ! file_exists(ABSPATH . '../wp-settings.php'))
0d28b7c10758 First commit
ymh
parents:
diff changeset
    52
	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>");
0d28b7c10758 First commit
ymh
parents:
diff changeset
    53
0d28b7c10758 First commit
ymh
parents:
diff changeset
    54
if ( version_compare( '4.3', phpversion(), '>' ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    55
	wp_die( sprintf( /*WP_I18N_OLD_PHP*/'Your server is running PHP version %s but WordPress requires at least 4.3.'/*/WP_I18N_OLD_PHP*/, phpversion() ) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    56
0d28b7c10758 First commit
ymh
parents:
diff changeset
    57
if ( !extension_loaded('mysql') && !file_exists(ABSPATH . 'wp-content/db.php') )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    58
	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*/ );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    59
0d28b7c10758 First commit
ymh
parents:
diff changeset
    60
if (isset($_GET['step']))
0d28b7c10758 First commit
ymh
parents:
diff changeset
    61
	$step = $_GET['step'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    62
else
0d28b7c10758 First commit
ymh
parents:
diff changeset
    63
	$step = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    64
0d28b7c10758 First commit
ymh
parents:
diff changeset
    65
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
    66
 * Display setup wp-config.php file header.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    67
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    68
 * @ignore
0d28b7c10758 First commit
ymh
parents:
diff changeset
    69
 * @since 2.3.0
0d28b7c10758 First commit
ymh
parents:
diff changeset
    70
 * @package WordPress
0d28b7c10758 First commit
ymh
parents:
diff changeset
    71
 * @subpackage Installer_WP_Config
0d28b7c10758 First commit
ymh
parents:
diff changeset
    72
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    73
function display_header() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    74
	header( 'Content-Type: text/html; charset=utf-8' );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    75
?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    76
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
0d28b7c10758 First commit
ymh
parents:
diff changeset
    77
<html xmlns="http://www.w3.org/1999/xhtml">
0d28b7c10758 First commit
ymh
parents:
diff changeset
    78
<head>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    79
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
0d28b7c10758 First commit
ymh
parents:
diff changeset
    80
<title>WordPress &rsaquo; Setup Configuration File</title>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    81
<link rel="stylesheet" href="css/install.css" type="text/css" />
0d28b7c10758 First commit
ymh
parents:
diff changeset
    82
0d28b7c10758 First commit
ymh
parents:
diff changeset
    83
</head>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    84
<body>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    85
<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png" /></h1>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    86
<?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
    87
}//end function display_header();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    88
0d28b7c10758 First commit
ymh
parents:
diff changeset
    89
switch($step) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    90
	case 0:
0d28b7c10758 First commit
ymh
parents:
diff changeset
    91
		display_header();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    92
?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    93
0d28b7c10758 First commit
ymh
parents:
diff changeset
    94
<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>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    95
<ol>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    96
	<li>Database name</li>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    97
	<li>Database username</li>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    98
	<li>Database password</li>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    99
	<li>Database host</li>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   100
	<li>Table prefix (if you want to run more than one WordPress in a single database) </li>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   101
</ol>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   102
<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>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   103
<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&hellip;</p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   104
0d28b7c10758 First commit
ymh
parents:
diff changeset
   105
<p class="step"><a href="setup-config.php?step=1" class="button">Let&#8217;s go!</a></p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   106
<?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
   107
	break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   108
0d28b7c10758 First commit
ymh
parents:
diff changeset
   109
	case 1:
0d28b7c10758 First commit
ymh
parents:
diff changeset
   110
		display_header();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   111
	?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   112
<form method="post" action="setup-config.php?step=2">
0d28b7c10758 First commit
ymh
parents:
diff changeset
   113
	<p>Below you should enter your database connection details. If you're not sure about these, contact your host. </p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   114
	<table class="form-table">
0d28b7c10758 First commit
ymh
parents:
diff changeset
   115
		<tr>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   116
			<th scope="row"><label for="dbname">Database Name</label></th>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   117
			<td><input name="dbname" id="dbname" type="text" size="25" value="wordpress" /></td>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   118
			<td>The name of the database you want to run WP in. </td>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   119
		</tr>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   120
		<tr>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   121
			<th scope="row"><label for="uname">User Name</label></th>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   122
			<td><input name="uname" id="uname" type="text" size="25" value="username" /></td>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   123
			<td>Your MySQL username</td>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   124
		</tr>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   125
		<tr>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   126
			<th scope="row"><label for="pwd">Password</label></th>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   127
			<td><input name="pwd" id="pwd" type="text" size="25" value="password" /></td>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   128
			<td>...and MySQL password.</td>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   129
		</tr>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   130
		<tr>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   131
			<th scope="row"><label for="dbhost">Database Host</label></th>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   132
			<td><input name="dbhost" id="dbhost" type="text" size="25" value="localhost" /></td>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   133
			<td>99% chance you won't need to change this value.</td>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   134
		</tr>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   135
		<tr>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   136
			<th scope="row"><label for="prefix">Table Prefix</label></th>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   137
			<td><input name="prefix" id="prefix" type="text" id="prefix" value="wp_" size="25" /></td>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   138
			<td>If you want to run multiple WordPress installations in a single database, change this.</td>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   139
		</tr>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   140
	</table>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   141
	<p class="step"><input name="submit" type="submit" value="Submit" class="button" /></p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   142
</form>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   143
<?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
   144
	break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   145
0d28b7c10758 First commit
ymh
parents:
diff changeset
   146
	case 2:
0d28b7c10758 First commit
ymh
parents:
diff changeset
   147
	$dbname  = trim($_POST['dbname']);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   148
	$uname   = trim($_POST['uname']);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   149
	$passwrd = trim($_POST['pwd']);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   150
	$dbhost  = trim($_POST['dbhost']);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   151
	$prefix  = trim($_POST['prefix']);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   152
	if (empty($prefix)) $prefix = 'wp_';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   153
0d28b7c10758 First commit
ymh
parents:
diff changeset
   154
	// Test the db connection.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   155
	/**#@+
0d28b7c10758 First commit
ymh
parents:
diff changeset
   156
	 * @ignore
0d28b7c10758 First commit
ymh
parents:
diff changeset
   157
	 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   158
	define('DB_NAME', $dbname);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   159
	define('DB_USER', $uname);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   160
	define('DB_PASSWORD', $passwrd);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   161
	define('DB_HOST', $dbhost);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   162
	/**#@-*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
   163
0d28b7c10758 First commit
ymh
parents:
diff changeset
   164
	// We'll fail here if the values are no good.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   165
	require_wp_db();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   166
	if ( !empty($wpdb->error) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   167
		wp_die($wpdb->error->get_error_message());
0d28b7c10758 First commit
ymh
parents:
diff changeset
   168
0d28b7c10758 First commit
ymh
parents:
diff changeset
   169
	foreach ($configFile as $line_num => $line) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   170
		switch (substr($line,0,16)) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   171
			case "define('DB_NAME'":
0d28b7c10758 First commit
ymh
parents:
diff changeset
   172
				$configFile[$line_num] = str_replace("putyourdbnamehere", $dbname, $line);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   173
				break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   174
			case "define('DB_USER'":
0d28b7c10758 First commit
ymh
parents:
diff changeset
   175
				$configFile[$line_num] = str_replace("'usernamehere'", "'$uname'", $line);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   176
				break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   177
			case "define('DB_PASSW":
0d28b7c10758 First commit
ymh
parents:
diff changeset
   178
				$configFile[$line_num] = str_replace("'yourpasswordhere'", "'$passwrd'", $line);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   179
				break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   180
			case "define('DB_HOST'":
0d28b7c10758 First commit
ymh
parents:
diff changeset
   181
				$configFile[$line_num] = str_replace("localhost", $dbhost, $line);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   182
				break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   183
			case '$table_prefix  =':
0d28b7c10758 First commit
ymh
parents:
diff changeset
   184
				$configFile[$line_num] = str_replace('wp_', $prefix, $line);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   185
				break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   186
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   187
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   188
	if ( ! is_writable(ABSPATH) ) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   189
		display_header();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   190
?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   191
<p>Sorry, but I can't write the <code>wp-config.php</code> file.</p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   192
<p>You can create the <code>wp-config.php</code> manually and paste the following text into it.</p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   193
<textarea cols="90" rows="15"><?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
   194
		foreach( $configFile as $line ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   195
			echo htmlentities($line);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   196
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   197
?></textarea>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   198
<p>After you've done that, click "Run the install."</p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   199
<p class="step"><a href="install.php" class="button">Run the install</a></p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   200
<?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
   201
	else :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   202
		$handle = fopen(ABSPATH . 'wp-config.php', 'w');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   203
		foreach( $configFile as $line ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   204
			fwrite($handle, $line);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   205
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   206
		fclose($handle);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   207
		chmod(ABSPATH . 'wp-config.php', 0666);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   208
		display_header();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   209
?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   210
<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>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   211
0d28b7c10758 First commit
ymh
parents:
diff changeset
   212
<p class="step"><a href="install.php" class="button">Run the install</a></p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   213
<?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
   214
	endif;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   215
	break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   216
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   217
?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   218
</body>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   219
</html>