[wp-trac] [WordPress Trac] #54877: Occasional PHP exception being thrown on WPDB/MySQLi connections

WordPress Trac noreply at wordpress.org
Thu Apr 7 22:15:54 UTC 2022

#54877: Occasional PHP exception being thrown on WPDB/MySQLi connections
 Reporter:  johnjamesjacoby        |       Owner:  (none)
     Type:  enhancement            |      Status:  new
 Priority:  normal                 |   Milestone:  6.0
Component:  Database               |     Version:  1.5
 Severity:  normal                 |  Resolution:
 Keywords:  2nd-opinion has-patch  |     Focuses:

Comment (by jrf):

 Saw mention of this ticket in Slack and thought I'd have a quick look.

 If I look at the patch + look at the usage of the `$port` variable in
 various places in the `wp-db.php` file, I'm seeing potential problems.

 The `$port` parameter in the `mysqli::real_connect()` function is
 ''optional'', but by the looks of it, it is not ''nullable''.
 See: https://www.php.net/manual/en/mysqli.real-connect.php

 As of PHP 8.1, passing `null` (the default value for `$port` in various
 places) to a non-nullable parameter will result in a deprecation notice
 and this will become a fatal error in PHP 9.0.

 As the potential use of `null` in these calls was not yet found so far via
 the test suite, this indicates to me there is also a shortage of tests
 covering this class.

 In other words, I would recommend the following actions:
 1. Do a full review of the parameters passed to
 `mysqli::real_connect()`/`mysqli_real_connect()` function calls throughout
 the `wp-db.php` file to ensure parameter defaults passed will not cause
 PHP 8.1 deprecation notices.
 2. Add dedicated tests to cover those situations with the risks of the
 deprecation notice to prevent regressions for any patches put in place.
 This includes adding tests to cover the currently proposed patch.

Ticket URL: <https://core.trac.wordpress.org/ticket/54877#comment:14>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform

More information about the wp-trac mailing list