user5174817
user5174817

Reputation:

Compiled PHP 7 missing mysql extension in WordPress

I have built PHP 7 with a configuration that worked for a previous version of PHP. Now my WordPress websites get the message:

Your PHP installation appears to be missing the MySQL extension which is required by WordPress.

Other websites using mysqli do work. What am I missing?

I've also included all .so files with mysql in the name:

extension=dba.so
extension=mysql.so
extension=mysqli.so
extension=mysqlnd_mysql.so
extension=mysqlnd_mysqli.so
extension=mysqlnd.so
extension=pdo.so
extension=pdo_mysql.so
extension=pdo_odbc.so
extension=odbc.so

Upvotes: 23

Views: 44987

Answers (6)

ki9
ki9

Reputation: 5575

On Ubuntu, I fixed this error by running

sudo apt-get install php-mysql

And then restarting my server (caddy, but you might be using apache or nginx).

source

Upvotes: -2

user5174817
user5174817

Reputation:

This issue is caused by php 7.1.0-dev.

I built another one with the same configuration version 7.0.0 and the issue was resolved.

This has nothing to do with WordPress since it will automatically try to use MySQLi when MySQL is not found. At least in WP 4.4.

Upvotes: 3

BRoebie
BRoebie

Reputation: 384

mysql_* functions got deleted in PHP 7.0 update your code to mysqli or PDO

Also take a look at prepared statements if you are handling user input. To reduce the chance of SQL injections

An example of mysqli connection string:

<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
?>

An example of pdo connection string:

<?php
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?> 

Note:

That mysqli example handles a connection error

Upvotes: 9

KiwiJuicer
KiwiJuicer

Reputation: 1982

PHP 7 has removed mysql_* completely.

You need to use PDO or mysqli. Wordpress seems not to support this.

Upvotes: 18

Machavity
Machavity

Reputation: 31614

As has been mentioned elsewhere, the ext/mysql functions have been removed. We've been talking about this for some time.

ext/mysql was built for MySQL 3.23 and only got very few additions since then while mostly keeping compatibility with this old version which makes the code a bit harder to maintain.

If you're hell-bent on putting them back in, you can add them back to PHP 7 by using the ext/mysql PECL Library

It's important to note that Wordpress 3.9 or later supports mysqli

In WordPress 3.9, we added an extra layer to WPDB, causing it to switch to using the mysqli PHP library, when using PHP 5.5 or higher.

Upvotes: 7

Bruno Leite
Bruno Leite

Reputation: 68

Check if the Wordpress still using the Mysql extension that was removed in PHP7.

http://php.net/manual/en/migration70.removed-exts-sapis.php

The Mysqli and PDO extensions were kept. This is the reason your other websites are working.

Upvotes: 3

Related Questions