Bug #78870 [Com]: Connection errors appear in error.log

From: Date: Sat, 14 Dec 2019 18:50:38 +0000
Subject: Bug #78870 [Com]: Connection errors appear in error.log
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-224302@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=78870&edit=1 ID: 78870 Comment by: bugreports at gmail dot com Reported by: hhsnakeg at gmail dot com Summary: Connection errors appear in error.log Status: Open Type: Bug Package: MySQLi related PHP Version: 7.2.24 Block user comment: N Private report: N New Comment: > 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 Previous Comments: ------------------------------------------------------------------------ [2019-12-14 18:05:03] 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(){ if(!isset($connectionID)){ $connectionID = mysqli_init(); if (!$connectionID){die("mysqli_init failed");} mysqli_real_connect($connectionID,'localhost', 'dbuser', 'dbpass', 'dbscheme'); }} connect(); 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: if(!isset($connectionID)){ $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-11-26 15:02:54] cmb@php.net Thanks! ------------------------------------------------------------------------ [2019-11-26 14:56:48] hhsnakeg at gmail dot com 1. use 7.2.24 2. use mysqlnd 5.0.12-dev - 20150407 - $Id: 3591daad22de08524295e1bd073aceeff11e6579 $ ($connectionID->get_client_info();) Package: php7.2-mysql Version: 7.2.24-1+ubuntu18.04.1+deb.sury.org+1 Provides: php-mysqli, php-mysqlnd, php-pdo-mysql, php7.2-mysqli, php7.2-mysqlnd, php7.2-pdo-mysql ------------------------------------------------------------------------ [2019-11-26 13:47:39] cmb@php.net 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 13:13:49] hhsnakeg at gmail dot com Description: ------------ 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: --------------- <?php function connect() { $connectionID = mysqli_init(); $ok = mysqli_real_connect($connectionID, 'p:localhost', 'dbuser', 'dbpass', 'dbscheme', 3306, "", 0); mysqli_select_db($connectionID, 'dbsheme'); } connect(); connect(); ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=78870&edit=1

« previous php.bugs (#224302) next »