forked from WordPress/WordPress
-
Notifications
You must be signed in to change notification settings - Fork 1
/
wp-load.php
83 lines (83 loc) · 4.12 KB
/
wp-load.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
/**
* Bootstrap file for setting the ABSPATH constant
* and loading the wp-config.php file. The wp-config.php
* file will then load the wp-settings.php file, which
* will then set up the WordPress environment.
*
* If the wp-config.php file is not found then an error
* will be displayed asking the visitor to set up the
* wp-config.php file.
*
* Will also search for wp-config.php in WordPress' parent
* directory to allow the WordPress directory to remain
* untouched.
*
* @package WordPress
*/
/** Define ABSPATH as this file's directory */
if(! defined('ABSPATH'))
{
define('ABSPATH', __DIR__.'/');
}
/*
* The error_reporting() function can be disabled in php.ini. On systems where that is the case,
* it's best to add a dummy function to the wp-config.php file, but as this call to the function
* is run prior to wp-config.php loading, it is wrapped in a function_exists() check.
*/
if(function_exists('error_reporting'))
{
/*
* Initialize error reporting to a known set of levels.
*
* This will be adapted in wp_debug_mode() located in wp-includes/load.php based on WP_DEBUG.
* @see https://www.php.net/manual/en/errorfunc.constants.php List of known error levels.
*/
error_reporting(E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR);
}
/*
* If wp-config.php exists in the WordPress root, or if it exists in the root and wp-settings.php
* doesn't, load wp-config.php. The secondary check for wp-settings.php has the added benefit
* of avoiding cases where the current directory is a nested installation, e.g. / is WordPress(a)
* and /blog/ is WordPress(b).
*
* If neither set of conditions is true, initiate loading the setup process.
*/
if(file_exists(ABSPATH.'wp-config.php'))
{
/** The config file resides in ABSPATH */
require_once ABSPATH.'wp-config.php';
}
elseif(@file_exists(dirname(ABSPATH).'/wp-config.php') && ! @file_exists(dirname(ABSPATH).'/wp-settings.php'))
{
/** The config file resides one level above ABSPATH but is not part of another installation */
require_once dirname(ABSPATH).'/wp-config.php';
}
else
{
// A config file doesn't exist.
define('WPINC', 'wp-includes');
require_once ABSPATH.WPINC.'/version.php';
require_once ABSPATH.WPINC.'/compat.php';
require_once ABSPATH.WPINC.'/load.php';
// Check for the required PHP version and for the MySQL extension or a database drop-in.
wp_check_php_mysql_versions();
// Standardize $_SERVER variables across setups.
wp_fix_server_vars();
define('WP_CONTENT_DIR', ABSPATH.'wp-content');
require_once ABSPATH.WPINC.'/functions.php';
$path = wp_guess_url().'/wp-admin/setup-config.php';
// Redirect to setup-config.php.
if(! str_contains($_SERVER['REQUEST_URI'], 'setup-config'))
{
header('Location: '.$path);
exit;
}
wp_load_translations_early();
// Die with an error message.
$die = '<p>'.sprintf(/* translators: %s: wp-config.php */ __("There doesn't seem to be a %s file. It is needed before the installation can continue."), '<code>wp-config.php</code>').'</p>';
$die .= '<p>'.sprintf(/* translators: 1: Documentation URL, 2: wp-config.php */ __('Need more help? <a href="%1$s">Read the support article on %2$s</a>.'), __('https://wordpress.org/documentation/article/editing-wp-config-php/'), '<code>wp-config.php</code>').'</p>';
$die .= '<p>'.sprintf(/* translators: %s: wp-config.php */ __("You can create a %s file through a web interface, but this doesn't work for all server setups. The safest way is to manually create the file."), '<code>wp-config.php</code>').'</p>';
$die .= '<p><a href="'.$path.'" class="button button-large">'.__('Create a Configuration File').'</a></p>';
wp_die($die, __('WordPress › Error'));
}