Every page of the site, the admin included, shows one plain line: "Your PHP installation appears to be missing the MySQL extension which is required by WordPress. Please check that the mysqli PHP extension is installed and enabled." Nothing is lost: the database and the files are fine. PHP simply cannot talk to the database, and that almost always started with a PHP version change.
mysqli (or nd_mysqli) is ticked in the extensions list for that version.wp-includes/version.php in the file manager and read $wp_version. Very old versions (before 3.9) only knew PHP's old mysql extension, which PHP 7 removed, so they show this message on any modern PHP even with mysqli switched on.php -m answers for the command line only; a phpinfo() page (delete it straight after) answers for the web server.mysqli, or nd_mysqli on CloudLinux-style selectors (one of the two, not both), save, and reload the site. Each PHP version has its own list, so a switch can quietly reset it.php8.2-mysql on Debian or Ubuntu, then restart PHP-FPM for that version (or the web server). Check again with a phpinfo() page and remove it.| What you see | What it means | Usual fix |
|---|---|---|
| Started right after a PHP version change | The new version has mysqli switched off | Tick mysqli for that version, or switch back first |
| Started after a server move or a new VPS | The MySQL extension was never installed there | Install the php-mysql package for that PHP version, restart PHP |
| mysqli is on and the message stays | WordPress older than 3.9, or the web server runs a different PHP than you checked | Check $wp_version and a phpinfo page |
| "Error establishing a database connection" instead | PHP can reach MySQL code but not the database | See the database connection guide |
| "There has been a critical error" after the PHP change | A plugin or theme breaks on the new PHP | See the critical error guide |
wp-includes/load.php to remove the check. The check is right: without the extension WordPress cannot read a single post, and the edit is wiped at the next update.phpinfo() file on the site. It shows your server's paths and settings to anyone who finds it.Most of these are one tick box in the host panel and are fixed in minutes. If the site is very old, or it runs on its own server and nobody knows how it was set up, that is what the box below is for. Related: outdated PHP, database connection error and "There has been a critical error".