|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #78870 Connection errors appear in error.log
Submitted: 2019-11-26 13:13 UTC Modified: 2019-11-26 15:02 UTC
Avg. Score:3.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:0 (0.0%)
Same OS:0 (0.0%)
From: hhsnakeg at gmail dot com Assigned:
Status: Open Package: MySQLi related
PHP Version: 7.2.24 OS:
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please — but make sure to vote on the bug!
Your email address:
Solve the problem:
42 - 27 = ?
Subscribe to this entry?

 [2019-11-26 13:13 UTC] hhsnakeg at gmail dot com
When I use persist connection on PHP use call mysqli_real_connect with parameter host 'p:localhost' causes error connection when I call the connection second time.
After that, a new database connection is created with a new id.

When we connect to the database for the first time we see a message in the general log:
454 Connect   dbuser@localhost on dbscheme using Socket
When we reuse connection (connect second time) we see a message in the general log:
454 Connect   Access denied for user 'dbuser'@'localhost' (using password: NO)
455 Connect   dbuser@localhost on dbscheme using Socket
and in the error log we see the same message:
454 [Note] Access denied for user 'dbuser'@'localhost' (using password: NO)

I think this error appeared after changes in version 7.2.24 (Fixed bug #76809 (SSL settings aren't respected when persistent connections are used).

Test script:

function connect()
    $connectionID = mysqli_init();
    $ok = mysqli_real_connect($connectionID,
    mysqli_select_db($connectionID, 'dbsheme');



Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2019-11-26 13:47 UTC]
-Status: Open +Status: Feedback -Assigned To: +Assigned To: cmb
 [2019-11-26 13:47 UTC]
Just to clarify:
 - are you using PHP 7.2.25 or 7.2.24?
 - which driver do you use – mysqlnd or libmysqlclient?
 [2019-11-26 14:56 UTC] hhsnakeg at gmail dot com
1. use 7.2.24 

2. use mysqlnd 5.0.12-dev - 20150407 - $Id: 3591daad22de08524295e1bd073aceeff11e6579 $ 
Package: php7.2-mysql 
Provides: php-mysqli, php-mysqlnd, php-pdo-mysql, php7.2-mysqli, php7.2-mysqlnd, php7.2-pdo-mysql
 [2019-11-26 15:02 UTC]
-Status: Feedback +Status: Open -PHP Version: 7.2.25 +PHP Version: 7.2.24 -Assigned To: cmb +Assigned To:
 [2019-11-26 15:02 UTC]
 [2019-12-14 18:05 UTC] drtechno at mail dot com
I think you have something going on with the your function.  you need to sense if it exists, and the connection scheme is installed (if you are looking for deployment) Try:

a fixed version of the Procedure style in a function (which I would not recommend):

function connect(){
$connectionID = mysqli_init();
if (!$connectionID){die("mysqli_init failed");}
mysqli_real_connect($connectionID,'localhost', 'dbuser', 'dbpass', 'dbscheme');


But you shouldn't use a connect in a function ever!
 You should always control the connection state, and close the connection at the end of page.... use "require" call then   mysqli_close($con); at the end of working with the database, in your php page.
But If you need to call a connection, within a page, I recommend checking it first:

$connectionID = mysqli_init();
$con= mysqli_real_connect($connectionID,'localhost', 'dbuser', 'dbpass', 'dbscheme');

Here is an object oriented version:

$mysqli = mysqli_init();
if (!$mysqli) {die("mysqli_init failed");}
$con -> real_connect("localhost","dbuser","dbpass","my_db");

Just remember to  use the procedural: mysqli_close($con); or the object oriented: $mysqli -> close(); to close the connection at the bottom of your php page.
 [2019-12-14 18:50 UTC] bugreports at gmail dot com
> Just remember to  use the procedural: mysqli_close($con); 
> or the object oriented: $mysqli -> close(); to close the 
> connection at the bottom of your php page

please stop to educate closing mysql connections!

PHP does it at it's own at the end of the request when it#s not a persistent connection and if you ever decide to use persistent connections by 'p:localhost' instead 'localhost' you will regret your mysqli_close() which is less smart than PHP
 [2019-12-16 15:23 UTC] hhsnakeg at gmail dot com
To drtechno at mail dot com.
Please read the contents carefully before commenting. It is a persist connection and errors that occur when using it. I wrote a simple example of how to repeat the error, as required by the bug report tracker. If it’s convenient for someone, you can skip connect(); 2 times, but in this case you will need to reload the page 2 times. Don't like a function call? write without a function, the meaning will not change. Please do not write nonsense if you do not understand the topic. Good luck.

This connection style is used in the ADODB library.
function _connect() lines 89-144 in current master branch.
PHP Copyright © 2001-2023 The PHP Group
All rights reserved.
Last updated: Sun Sep 24 20:01:25 2023 UTC