author | ymh <ymh.work@gmail.com> |
Fri, 05 Sep 2025 18:52:52 +0200 | |
changeset 22 | 8c2e4d02f4ef |
parent 21 | 48c4eec2b7e6 |
permissions | -rw-r--r-- |
0 | 1 |
<?php |
2 |
/** |
|
3 |
* Bootstrap file for setting the ABSPATH constant |
|
4 |
* and loading the wp-config.php file. The wp-config.php |
|
5 |
* file will then load the wp-settings.php file, which |
|
6 |
* will then set up the WordPress environment. |
|
7 |
* |
|
8 |
* If the wp-config.php file is not found then an error |
|
9 |
* will be displayed asking the visitor to set up the |
|
10 |
* wp-config.php file. |
|
11 |
* |
|
12 |
* Will also search for wp-config.php in WordPress' parent |
|
13 |
* directory to allow the WordPress directory to remain |
|
14 |
* untouched. |
|
15 |
* |
|
16 |
* @package WordPress |
|
17 |
*/ |
|
18 |
||
19 |
/** Define ABSPATH as this file's directory */ |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
20 |
if ( ! defined( 'ABSPATH' ) ) { |
16 | 21 |
define( 'ABSPATH', __DIR__ . '/' ); |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
22 |
} |
0 | 23 |
|
18 | 24 |
/* |
25 |
* The error_reporting() function can be disabled in php.ini. On systems where that is the case, |
|
26 |
* it's best to add a dummy function to the wp-config.php file, but as this call to the function |
|
27 |
* is run prior to wp-config.php loading, it is wrapped in a function_exists() check. |
|
28 |
*/ |
|
29 |
if ( function_exists( 'error_reporting' ) ) { |
|
30 |
/* |
|
31 |
* Initialize error reporting to a known set of levels. |
|
32 |
* |
|
33 |
* This will be adapted in wp_debug_mode() located in wp-includes/load.php based on WP_DEBUG. |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
34 |
* @see https://www.php.net/manual/en/errorfunc.constants.php List of known error levels. |
18 | 35 |
*/ |
36 |
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 ); |
|
37 |
} |
|
0 | 38 |
|
5 | 39 |
/* |
40 |
* If wp-config.php exists in the WordPress root, or if it exists in the root and wp-settings.php |
|
41 |
* doesn't, load wp-config.php. The secondary check for wp-settings.php has the added benefit |
|
42 |
* of avoiding cases where the current directory is a nested installation, e.g. / is WordPress(a) |
|
43 |
* and /blog/ is WordPress(b). |
|
44 |
* |
|
45 |
* If neither set of conditions is true, initiate loading the setup process. |
|
46 |
*/ |
|
9 | 47 |
if ( file_exists( ABSPATH . 'wp-config.php' ) ) { |
0 | 48 |
|
49 |
/** The config file resides in ABSPATH */ |
|
16 | 50 |
require_once ABSPATH . 'wp-config.php'; |
0 | 51 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
52 |
} elseif ( @file_exists( dirname( ABSPATH ) . '/wp-config.php' ) && ! @file_exists( dirname( ABSPATH ) . '/wp-settings.php' ) ) { |
0 | 53 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
54 |
/** The config file resides one level above ABSPATH but is not part of another installation */ |
16 | 55 |
require_once dirname( ABSPATH ) . '/wp-config.php'; |
0 | 56 |
|
57 |
} else { |
|
58 |
||
16 | 59 |
// A config file doesn't exist. |
0 | 60 |
|
61 |
define( 'WPINC', 'wp-includes' ); |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
62 |
require_once ABSPATH . WPINC . '/version.php'; |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
63 |
require_once ABSPATH . WPINC . '/compat.php'; |
16 | 64 |
require_once ABSPATH . WPINC . '/load.php'; |
0 | 65 |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
66 |
// Check for the required PHP version and for the MySQL extension or a database drop-in. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
67 |
wp_check_php_mysql_versions(); |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
68 |
|
0 | 69 |
// Standardize $_SERVER variables across setups. |
70 |
wp_fix_server_vars(); |
|
71 |
||
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
72 |
define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' ); |
16 | 73 |
require_once ABSPATH . WPINC . '/functions.php'; |
0 | 74 |
|
75 |
$path = wp_guess_url() . '/wp-admin/setup-config.php'; |
|
76 |
||
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
77 |
// Redirect to setup-config.php. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
78 |
if ( ! str_contains( $_SERVER['REQUEST_URI'], 'setup-config' ) ) { |
5 | 79 |
header( 'Location: ' . $path ); |
80 |
exit; |
|
81 |
} |
|
82 |
||
83 |
wp_load_translations_early(); |
|
84 |
||
18 | 85 |
// Die with an error message. |
86 |
$die = '<p>' . sprintf( |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
87 |
/* translators: %s: wp-config.php */ |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
88 |
__( "There doesn't seem to be a %s file. It is needed before the installation can continue." ), |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
89 |
'<code>wp-config.php</code>' |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
90 |
) . '</p>'; |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
91 |
$die .= '<p>' . sprintf( |
19 | 92 |
/* translators: 1: Documentation URL, 2: wp-config.php */ |
93 |
__( 'Need more help? <a href="%1$s">Read the support article on %2$s</a>.' ), |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
94 |
__( 'https://developer.wordpress.org/advanced-administration/wordpress/wp-config/' ), |
19 | 95 |
'<code>wp-config.php</code>' |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
96 |
) . '</p>'; |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
97 |
$die .= '<p>' . sprintf( |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
98 |
/* translators: %s: wp-config.php */ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
99 |
__( "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." ), |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
100 |
'<code>wp-config.php</code>' |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
101 |
) . '</p>'; |
18 | 102 |
$die .= '<p><a href="' . $path . '" class="button button-large">' . __( 'Create a Configuration File' ) . '</a></p>'; |
0 | 103 |
|
104 |
wp_die( $die, __( 'WordPress › Error' ) ); |
|
105 |
} |