ID: 45468 Comment by: gerry dot spm+phpbug at gmail dot com Reported By: michael dot kofler at gmx dot com Status: No Feedback Bug Type: MySQLi related Operating System: * PHP Version: 5.3.0alpha1 Assigned To: mysql New Comment:
I am a complete noob to compiling PHP (and linux in general) so this is probably something that I'm doing wrong. I'll probably switch back to using the old command until this is fixed, but I just though I'd let you know that I am having the same issue. Previously I was running PHP 5.2.9 with the following config: ./configure \ --with-apxs2=/usr/local/apache2/bin/apxs \ --with-mysql=/usr/bin/mysql_config \ --with-mysqli=/usr/bin/mysql_config \ --with-mcrypt \ --enable-mbstring \ --with-zlib \ --with-bz2 \ --with-gd \ --with-zlib-dir \ --with-jpeg-dir \ --with-curl All worked fine in this config, but today I downloaded RC1 of PHP 5.3 and slightly modified my config to use mysqlnd: sudo ./configure \ --with-apxs2=/usr/local/apache2/bin/apxs \ --with-mysql=mysqlnd \ --with-mysqli=mysqlnd \ --with-mcrypt \ --enable-mbstring \ --with-zlib \ --with-bz2 \ --with-gd \ --with-zlib-dir \ --with-jpeg-dir \ --with-curl I am now also receiving the error: Connect Error (2002) No such file or directory Previous Comments: ------------------------------------------------------------------------ [2009-02-11 01:00:00] php-bugs at lists dot php dot net No feedback was provided for this bug for over a week, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open". ------------------------------------------------------------------------ [2009-02-03 11:59:28] and...@php.net Hi, it was a problem, the Unix path, in the extensions, not mysqlnd. Yes, mysqlnd uses /tmp/mysql.sock, but actually there are no configure options for mysqlnd. --with-mysql-sock is actually an option of ext/mysql . It wasn't used in the past, as far as I recall, but current 5_3 and HEAD do use it to set default value for the socket path, which can be overwritten by the user. Both for ext/mysql and mysqli. This if from ext/mysql/php_mysql.c : #ifdef MYSQL_UNIX_ADDR STD_PHP_INI_ENTRY("mysql.default_socket", MYSQL_UNIX_ADDR,PHP_INI_ALL,OnUpdateStringUnempty, default_socket, zend_mysql_globals, mysql_globals) #else STD_PHP_INI_ENTRY("mysql.default_socket", NULL, PHP_INI_ALL, OnUpdateStringUnempty, default_socket, zend_mysql_globals, mysql_globals) #endif This is from ext/mysqli/mysql.c : #ifdef PHP_MYSQL_UNIX_SOCK_ADDR STD_PHP_INI_ENTRY("mysqli.default_socket", MYSQL_UNIX_ADDR,PHP_INI_ALL,OnUpdateStringUnempty, default_socket, zend_mysqli_globals, mysqli_globals) #else STD_PHP_INI_ENTRY("mysqli.default_socket", NULL, PHP_INI_ALL, OnUpdateStringUnempty, default_socket, zend_mysqli_globals, mysqli_globals) #endif MYSQL_UNIX_ADDR is a macro, for PHP_MYSQL_UNIX_ADDR, which is defined by the configure script if --with-mysql-sock is used. In this regard, PDO doesn't use --with-mysql-sock. PDO_MYSQL used mysql_config to find the socket, but for mysqln defaults to /tmp/mysql.sock , which seems like bug, because of inconsistency. This is something for Johannes Best, Andrey ------------------------------------------------------------------------ [2009-02-03 11:43:38] johan...@php.net Please try using this CVS snapshot: http://snaps.php.net/php5.3-latest.tar.gz For Windows: http://windows.php.net/snapshots/ --with-mysql-sock should work now properly ------------------------------------------------------------------------ [2008-08-19 20:32:28] bob dot kellum at gmail dot com Another possibility is to use the method described on this page: http://dev.mysql.com/doc/refman/5.1/en/old-client.html to craft an account that uses the older authentication scheme. This page states that many PHP applications may need to use this workaround. I found it (and this page) while troubleshooting a different "old client" issue. ------------------------------------------------------------------------ [2008-08-07 08:01:44] michael dot kofler at gmx dot com re-tested on Linux with alpha1, compiled with this configuration: configure --with-mysqli=mysqlnd \ --with-mysql=mysqlnd \ --with-mysql-sock=/var/run/mysqld/mysqld.sock \ --enable-pdo \ --with-pdo-mysql=mysqlnd \ --with-apxs2=/usr/bin/apxs2 \ --with-zlib \ --with-gd \ --with-config-file-scan-dir=/etc/php5/apache2 \ --with-jpeg-dir=/usr/lib \ --enable-exif \ --libdir=/usr/lib \ --enable-mbstring also tried --with-mysql-sock=/var/run/mysqld \ result: mysql, mysqli and PDO/mysql, all using mysqlnd, still look for the socket file /tmp/mysql.sock and ignore --with-mysql-sock if I compile without mysqlnd and without the --with-mysql-sock option, PHP automatically finds the right socket file, probably because libmysql reads the [client] settings in /etc/mysql/my.cnf my solution for now: I changed all socket options in /etc/mysql/my.cnf and /etc/mysql/debian.cnf it would be better either to provide a working configure option for PHP (--mysqlnd-sock=...) or to evaluate my.cnf within mysqlnd ------ PS: as to mysqlnd not supporting old MySQL authentication: perfectly fine for me, but *do document* it in some PHP 5.3 update advisory; otherwise I am pretty sure the update to PHP 5.3 will cause trouble for many MySQL users ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/45468 -- Edit this bug report at http://bugs.php.net/?id=45468&edit=1