0

I host my own WP site on a Debian/Raspbian buster server.

I upgraded PHP 7.1 to 7.3 and the site broke.

I can't understand why it broke because mysql_connect() is deprecated for 7.x (though wp-db.php seems to use it extensively - while WP nags you to upgrade to 7.3). So I looked to enabling the various modules in the fresh 7.3 install php.ini. MySQLi was commented out, so I enabled that (and a few others) but still get the same error.

Call to undefined function mysql_connect()... wp-db.php on line 1643

which is...

    if ( WP_DEBUG ) {
  1643                  $this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );

Php info references MySQLi several times so I'm assuming it's running. The same for mysqlnd.

I know this question gets asked a lot. But I have tried just about everything out there.

How can I get my site working again on 7.3?

Edit: I tried disabling plugins by renaming the dir and got the same result. I suspect the issue is my 7.3 PHP config, since 7.0 worked fie.

1

2 Answers 2

2

I mean your php.ini is changed, check for the entry extension=php_mysqll.dll.

(If you has no knowledge where is your used php.ini - see https://stackoverflow.com/questions/8684609/dude-wheres-my-php-ini)

Is this entry active, has no ; before the string. After change of the php.ini you need a restart of mysql, like sudo /etc/init.d/mysql restart.

Also a note, check that mysql is installed for the newer php version, maybe via console or the phpinfo().

sudo apt-get install mysql-server mysql-common php7.3 php7.3-mysql

3
  • extension=php_mysqll.dll doesn't appear in my /etc/php/7.3/apache2/php.ini Commented Sep 3, 2019 at 11:20
  • Check also that mysql is installed and add the extension to the php.ini is not a task after install mysql.
    – bueltge
    Commented Sep 3, 2019 at 12:08
  • It is installed, yes Commented Sep 3, 2019 at 20:43
1

Your problem is either:

  • very old WordPress
  • custom modifications to WP Core

Update to a newer version of WordPress to resolve the problem

For example, if we look at the current WP source code, it doesn't use mysql_connect and hasn't for years:

https://github.com/WordPress/WordPress/blob/master/wp-includes/wp-db.php#L1638

            if ( WP_DEBUG ) {
                mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
            } else {
                // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
                @mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
            }

It won't be enough to just change mysql_connect to mysqli_real_connect though, as there are other changes. So update to the latest WordPress

5
  • Interesting observation. I regularly update from the UI, and updated before upgrading to PHP 7.3. Commented Sep 3, 2019 at 20:44
  • Since I feel like I have tried everything else (spent days on this) I'll do a manual install of core files. Commented Sep 3, 2019 at 20:45
  • I have zero idea what is going on. A clean install worked (vanilla site). I started copying across elements in the hope of picking up what broke it. Using the default clean theme and no plugins I connected it to the old DB. It worked! Then I copied across my old wp-config.php and it broke! I have rebuilt the site (added the plugins theme and child theme one by one) off the new install and it all works on 7.3. Could it have been the hashes somehow? Commented Sep 4, 2019 at 22:04
  • As a side, even when I was on 7.1, WP Chron wasn't working. This is now working too. I had recently migrated servers so it's likely that. Just most stuff was working and only broke when I upgraded PHP. Commented Sep 4, 2019 at 22:40
  • Hashes shouldn't make a difference, without knowing the contents of your wp-config.php it's impossible to comment, but sharing that file as is would be a security breach
    – Tom J Nowell
    Commented Sep 4, 2019 at 23:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.