installing now.' ),
'wp-config.php',
'install.php'
);
} else {
$message = sprintf(
/* translators: 1: wp-config.php, 2: install.php */
__( 'The file %1$s 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 installing now.' ),
'wp-config.php',
'install.php'
);
}
wp_die( '
' . $message . '
', 409 ); } /** * We are blissfully unaware of anything. */ define( 'WP_SETUP_CONFIG', true ); /** * Disable error reporting * * Set this to error_reporting( -1 ) for debugging */ error_reporting( 0 ); require ABSPATH . 'wp-settings.php'; /** Load WordPress Administration Upgrade API */ require_once ABSPATH . 'wp-admin/includes/upgrade.php'; /** Load WordPress Translation Installation API */ require_once ABSPATH . 'wp-admin/includes/translation-install.php'; nocache_headers(); // Support wp-config-sample.php one level up, for the develop repo. if ( file_exists( ABSPATH . 'wp-config-sample.php' ) ) { $config_file = file( ABSPATH . 'wp-config-sample.php' ); } elseif ( file_exists( dirname( ABSPATH ) . '/wp-config-sample.php' ) ) { $config_file = file( dirname( ABSPATH ) . '/wp-config-sample.php' ); } else { wp_die( sprintf( /* translators: %s: wp-config-sample.php */ __( 'Sorry, I need a %s file to work from. Please re-upload this file to your WordPress installation.' ), 'wp-config-sample.php'
)
);
}
$step = isset( $_GET['step'] ) ? (int) $_GET['step'] : -1;
/**
* Display setup wp-config.php file header.
*
* @ignore
* @since 2.3.0
*
* @param string|string[] $body_classes Class attribute values for the body tag.
*/
function setup_config_display_header( $body_classes = array() ) {
$body_classes = (array) $body_classes;
$body_classes[] = 'wp-core-ui';
$body_classes[] = 'admin-color-modern';
if ( is_rtl() ) {
$body_classes[] = 'rtl';
}
header( 'Content-Type: text/html; charset=utf-8' );
?>
>
wp-config.php'
);
?>
wp-config-sample.php',
'wp-config.php'
);
?>
Read the support article on %2$s.' ),
__( 'https://developer.wordpress.org/advanced-administration/wordpress/wp-config/' ),
'wp-config.php'
);
?>
' . __( 'Try Again' ) . ''; if ( empty( $prefix ) ) { wp_die( __( 'Error: "Table Prefix" must not be empty.' ) . $tryagain_link ); } // Validate $prefix: it can only contain letters, numbers and underscores. if ( preg_match( '|[^a-z0-9_]|i', $prefix ) ) { wp_die( __( 'Error: "Table Prefix" can only contain numbers, letters, and underscores.' ) . $tryagain_link ); } // Test the DB connection. /**#@+ * * @ignore */ define( 'DB_NAME', $dbname ); define( 'DB_USER', $uname ); define( 'DB_PASSWORD', $pwd ); define( 'DB_HOST', $dbhost ); /**#@-*/ // Re-construct $wpdb with these new values. unset( $wpdb ); require_wp_db(); /* * The wpdb constructor bails when WP_SETUP_CONFIG is set, so we must * fire this manually. We'll fail here if the values are no good. */ $wpdb->db_connect(); if ( ! empty( $wpdb->error ) ) { wp_die( $wpdb->error->get_error_message() . $tryagain_link ); } $errors = $wpdb->suppress_errors(); $wpdb->query( "SELECT $prefix" ); $wpdb->suppress_errors( $errors ); if ( ! $wpdb->last_error ) { // MySQL was able to parse the prefix as a value, which we don't want. Bail. wp_die( __( 'Error: "Table Prefix" is invalid.' ) ); } // Generate keys and salts using secure CSPRNG; fallback to API if enabled; further fallback to original wp_generate_password(). try { $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|'; $max = strlen( $chars ) - 1; for ( $i = 0; $i < 8; $i++ ) { $key = ''; for ( $j = 0; $j < 64; $j++ ) { $key .= substr( $chars, random_int( 0, $max ), 1 ); } $secret_keys[] = $key; } } catch ( Exception $ex ) { $no_api = isset( $_POST['noapi'] ); if ( ! $no_api ) { $secret_keys = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' ); } if ( $no_api || is_wp_error( $secret_keys ) ) { $secret_keys = array(); for ( $i = 0; $i < 8; $i++ ) { $secret_keys[] = wp_generate_password( 64, true, true ); } } else { $secret_keys = explode( "\n", wp_remote_retrieve_body( $secret_keys ) ); foreach ( $secret_keys as $k => $v ) { $secret_keys[ $k ] = substr( $v, 28, 64 ); } } } /* * The Secrets API key is generated like the salts above, but written as base64-encoded * random bytes, the form the Secrets API uses as raw key material. */ try { $secrets_key = base64_encode( random_bytes( 32 ) ); } catch ( Exception $ex ) { $secrets_key = wp_generate_password( 64, true, true ); } $key = 0; $has_secrets_key = false; foreach ( $config_file as $line_num => $line ) { if ( str_starts_with( $line, '$table_prefix =' ) ) { $config_file[ $line_num ] = '$table_prefix = \'' . addcslashes( $prefix, "\\'" ) . "';\r\n"; continue; } if ( isset( $nonce_salt_line ) && ! isset( $salts_end_line ) && '/**#@-*/' === trim( $line ) ) { $salts_end_line = $line_num; continue; } if ( ! preg_match( '/^define\(\s*\'([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': $config_file[ $line_num ] = "define( '" . $constant . "'," . $padding . "'" . addcslashes( constant( $constant ), "\\'" ) . "' );\r\n"; break; case 'DB_CHARSET': if ( 'utf8mb4' === $wpdb->charset || ( ! $wpdb->charset ) ) { $config_file[ $line_num ] = "define( '" . $constant . "'," . $padding . "'utf8mb4' );\r\n"; } break; 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': $config_file[ $line_num ] = "define( '" . $constant . "'," . $padding . "'" . $secret_keys[ $key++ ] . "' );\r\n"; break; case 'WP_SECRETS_KEY': $config_file[ $line_num ] = "define( '" . $constant . "'," . $padding . "'" . $secrets_key . "' );\r\n"; $has_secrets_key = true; break; } if ( 'NONCE_SALT' === $constant ) { $nonce_salt_line = $line_num; } } unset( $line ); // A custom or older localized wp-config-sample.php may not define the key: add it after the salts. if ( ! $has_secrets_key && isset( $nonce_salt_line ) ) { $secrets_key_lines = array( "\r\n", "/**\r\n", " * Encryption key for the Secrets API.\r\n", " *\r\n", " * Secrets stored by WordPress and plugins are encrypted with this key.\r\n", " * Unlike the keys and salts above, changing it makes every stored secret unreadable.\r\n", " *\r\n", " * @since 7.2.0\r\n", " */\r\n", "define( 'WP_SECRETS_KEY', '" . $secrets_key . "' );\r\n", ); array_splice( $config_file, ( $salts_end_line ?? $nonce_salt_line ) + 1, 0, $secrets_key_lines ); } if ( ! is_writable( ABSPATH ) ) : setup_config_display_header(); ?>
wp-config.php' ); ?>
wp-config.php' ); $config_text = ''; foreach ( $config_file as $line ) { $config_text .= htmlentities( $line, ENT_COMPAT, 'UTF-8' ); } ?>
Changing File Permissions for more information.' ), 'wp-config.php',
__( 'https://developer.wordpress.org/advanced-administration/server/file-permissions/' )
);
} else {
$error_message = sprintf(
/* translators: %s: wp-config.php */
__( 'Unable to write to %s file.' ),
'wp-config.php'
);
}
}
chmod( $path_to_wp_config, 0666 );
setup_config_display_header();
if ( false !== $handle ) :
?>