#32081 [Opn->Csd]: Setting mysqli.default_socket in php.ini has no effect
| From: | iliaa@php.net | Date: | Fri, 25 Feb 2005 00:00:04 +0000 |
| Subject: | #32081 [Opn->Csd]: Setting mysqli.default_socket in php.ini has no effect | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-74506@lists.php.net to get a copy of this message | ||
ID: 32081
Updated by: iliaa@php.net
Reported By: subscription at nazarenko dot net
-Status: Open
+Status: Closed
Bug Type: MySQLi related
Operating System: Linux SuSE 8.2
PHP Version: 5.0.3
New Comment:
This bug has been fixed in CVS.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
Previous Comments:
------------------------------------------------------------------------
[2005-02-23 15:53:33] subscription at nazarenko dot net
Description:
------------
I am running MySQL 4.1.10 and PHP 5.0.3.
By default, on SuSE MySQL uses "/var/lib/mysql/mysql.sock".
I changed the location of the MySQL socket to "/srv/mysql/mysql.sock"
in /etc/my.cnf and MySQL is fine with it.
In my php.ini I have set mysqli.default_socket to the new socket
"/srv/mysql/mysql.sock".
Reproduce code:
---------------
The code:
$mysqli = mysqli_init();
$mysqli->real_connect('localhost', SQL_LOGIN, SQL_PASSWD);
produces the following warning:
mysqli::real_connect(): Can't connect to local MySQL server through
socket '/var/lib/mysql/mysql.sock' (2) in /srv/www/htdocs/index.php on
line 10
Expected result:
----------------
Since the socket value was omitted, it is expected that PHP uses the
default sockeet value from the php.ini file.
The error shows that the default socket value for MySQLi is ignored by
PHP.
Actual result:
--------------
When I first run phpinfo() I got the following output:
Client API version 4.1.10
MYSQLI_SOCKET /var/lib/mysql/mysql.sock
mysqli.default_socket /srv/mysql/mysql.sock
This made 3 things clear:
1) mysqli.default_socket variable *IS* correctly read from php.ini
2) mysqli.default_socket variable is *IGNORED* by the PHP interpreter
3) there is some variable called MYSQLI_SOCKET which is still set to
the "old-default" socket
I searched in the header files of MySQL and found a file called
"/usr/include/mysql/mysql_version.h", which contained a line:
#define MYSQL_UNIX_ADDR "/var/lib/mysql/mysql.sock"
I changed it to "/srv/mysql/mysql.sock" and recompiled PHP again.
This time phpinfo() gave the following output:
Client API version 4.1.10
MYSQLI_SOCKET /srv/mysql/mysql.sock
mysqli.default_socket /srv/mysql/mysql.sock
However, the problem was not gone!
mysqli_real_connect() was still trying to use the "hard-coded" (?)
value from MySQL server "/var/lib/mysql/mysql.sock".
Adding --with-mysql-sock=/srv/mysql/mysql.sock to the configure options
list did not help either. I guess this is by design as --with-mysql-sock
is not a MySQLi related option anyway.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=32081&edit=1