4

I'm considering upgrading from PHP7.4 to PHP8.0 on a Joomla 3.10.8 installation. I was surprised to find that my hosting provider only offers mysqlnd as a PHP extension in PHP 8.0, but not mysqli. This presumably means changing $dbtype in configuration.php in Joomla. Is there any difference between using mysqlnd and mysqli that would impact Joomla?

Is the mysqli extension considered obsolete?

I've looked elsewhere but can't find much information on this topic.

Postscript: After testing the PHP extensions available, it appears that Joomla will not allow $dbtype to be changed. The solution appears to be to select nd_mysqli extension (as well as mysqlnd) in the PHP8.0 extension list. In configuration.php $dbtype stays as mysqli.

0

1 Answer 1

3

The mysqli extension can be compiled against mysqlnd (PHP native driver for MySQL) or libmysql (the shared driver from Oracle). It's a compilation time option. PHP 8.2 will only allow mysqli to be compiled with mysqlnd.

The mysqli extension isn't deprecated, but it can be considered obsolete due to the existence of PDO extension. There's no reason to use mysqli if you can use PDO. Joomla allows you to use PDO extension for connecting to the database. PDO_MySQL can also be compiled against libmysql and mysqlnd.

Therefore, when setting Joomla, the best setting should be PDO. But the option to use mysqli is still there.

When you are using cPanel, the extension page is a non-standard list of PHP extensions. It is confusing because there are two variants for mysqli and PDO, as well as mysqlnd itself. You want to have mysqlnd enabled and the native driver variants of mysqli and PDO, i.e. nd_mysqli and nd_pdo_mysql

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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