From 0df974b7a599ae424bc7f80c23b4c721d689ce9c Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Mon, 21 Jul 2008 13:01:41 +0000 Subject: [PATCH] MFB : Fix for bug#45179 --with-mysql-sock fails to compile & work Now --with-mysql-sock controls all mysql extensions. If provided it will be the default value as it was set in php.ini . php.ini will override it for ext/mysql and ext/mysqli but not for pdo_mysql --- ext/mysql/config.m4 | 6 +++--- ext/mysql/php_mysql.c | 4 ++++ ext/mysql/php_mysql_structs.h | 7 +++++++ ext/mysqli/mysqli.c | 4 ++++ ext/mysqli/php_mysqli_structs.h | 7 +++++++ ext/pdo_mysql/config.m4 | 6 +++++- ext/pdo_mysql/mysql_driver.c | 7 ------- ext/pdo_mysql/pdo_mysql.c | 3 ++- ext/pdo_mysql/php_pdo_mysql_int.h | 9 +++++++++ 9 files changed, 41 insertions(+), 12 deletions(-) diff --git a/ext/mysql/config.m4 b/ext/mysql/config.m4 index 6a73ad63b76..8de15e8bbb9 100644 --- a/ext/mysql/config.m4 +++ b/ext/mysql/config.m4 @@ -31,7 +31,7 @@ AC_DEFUN([PHP_MYSQL_SOCKET_SEARCH], [ done if test -n "$MYSQL_SOCK"; then - AC_DEFINE_UNQUOTED(MYSQL_UNIX_ADDR, "$MYSQL_SOCK", [ ]) + AC_DEFINE_UNQUOTED(PHP_MYSQL_UNIX_SOCK_ADDR, "$MYSQL_SOCK", [ ]) AC_MSG_RESULT([$MYSQL_SOCK]) else AC_MSG_RESULT([no]) @@ -45,7 +45,7 @@ PHP_ARG_WITH(mysql, for MySQL support, the MySQL native driver will be used [/usr/local]]) PHP_ARG_WITH(mysql-sock, for specified location of the MySQL UNIX socket, -[ --with-mysql-sock[=DIR] MySQL: Location of the MySQL unix socket pointer. +[ --with-mysql-sock[=DIR] MySQL/MySQLi/PDO_MYSQL: Location of the MySQL unix socket pointer. If unspecified, the default locations are searched], no, no) if test -z "$PHP_ZLIB_DIR"; then @@ -62,7 +62,7 @@ elif test "$PHP_MYSQL" != "no"; then AC_MSG_CHECKING([for MySQL UNIX socket location]) if test "$PHP_MYSQL_SOCK" != "no" && test "$PHP_MYSQL_SOCK" != "yes"; then MYSQL_SOCK=$PHP_MYSQL_SOCK - AC_DEFINE_UNQUOTED(MYSQL_UNIX_ADDR, "$MYSQL_SOCK", [ ]) + AC_DEFINE_UNQUOTED(PHP_MYSQL_UNIX_SOCK_ADDR, "$MYSQL_SOCK", [ ]) AC_MSG_RESULT([$MYSQL_SOCK]) elif test "$PHP_MYSQL" = "yes" || test "$PHP_MYSQL_SOCK" = "yes"; then PHP_MYSQL_SOCKET_SEARCH diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c index d808255e37d..f6a492b0704 100644 --- a/ext/mysql/php_mysql.c +++ b/ext/mysql/php_mysql.c @@ -394,7 +394,11 @@ PHP_INI_BEGIN() STD_PHP_INI_ENTRY("mysql.default_user", NULL, PHP_INI_ALL, OnUpdateString, default_user, zend_mysql_globals, mysql_globals) STD_PHP_INI_ENTRY("mysql.default_password", NULL, PHP_INI_ALL, OnUpdateString, default_password, zend_mysql_globals, mysql_globals) PHP_INI_ENTRY("mysql.default_port", NULL, PHP_INI_ALL, OnMySQLPort) +#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 STD_PHP_INI_ENTRY("mysql.connect_timeout", "60", PHP_INI_ALL, OnUpdateLong, connect_timeout, zend_mysql_globals, mysql_globals) STD_PHP_INI_BOOLEAN("mysql.trace_mode", "0", PHP_INI_ALL, OnUpdateLong, trace_mode, zend_mysql_globals, mysql_globals) STD_PHP_INI_BOOLEAN("mysql.allow_local_infile", "1", PHP_INI_SYSTEM, OnUpdateLong, allow_local_infile, zend_mysql_globals, mysql_globals) diff --git a/ext/mysql/php_mysql_structs.h b/ext/mysql/php_mysql_structs.h index 07dea020eb7..273a959b681 100644 --- a/ext/mysql/php_mysql_structs.h +++ b/ext/mysql/php_mysql_structs.h @@ -43,6 +43,13 @@ #include #endif +#ifdef PHP_MYSQL_UNIX_SOCK_ADDR +#ifdef MYSQL_UNIX_ADDR +#undef MYSQL_UNIX_ADDR +#endif +#define MYSQL_UNIX_ADDR PHP_MYSQL_UNIX_SOCK_ADDR +#endif + #if (MYSQL_VERSION_ID >= 40113 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50007 || MYSQL_USE_MYSQLND #define MYSQL_HAS_SET_CHARSET #endif diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index 7cfa6714c0b..f246677539f 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -644,7 +644,11 @@ PHP_INI_BEGIN() STD_PHP_INI_ENTRY("mysqli.default_user", NULL, PHP_INI_ALL, OnUpdateString, default_user, zend_mysqli_globals, mysqli_globals) STD_PHP_INI_ENTRY("mysqli.default_pw", NULL, PHP_INI_ALL, OnUpdateString, default_pw, zend_mysqli_globals, mysqli_globals) STD_PHP_INI_ENTRY("mysqli.default_port", "3306", PHP_INI_ALL, OnUpdateLong, default_port, zend_mysqli_globals, mysqli_globals) +#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 STD_PHP_INI_BOOLEAN("mysqli.reconnect", "0", PHP_INI_SYSTEM, OnUpdateLong, reconnect, zend_mysqli_globals, mysqli_globals) STD_PHP_INI_BOOLEAN("mysqli.allow_local_infile", "1", PHP_INI_SYSTEM, OnUpdateLong, allow_local_infile, zend_mysqli_globals, mysqli_globals) #ifdef MYSQLI_USE_MYSQLND diff --git a/ext/mysqli/php_mysqli_structs.h b/ext/mysqli/php_mysqli_structs.h index a1be651df2e..bd5d5c8849d 100644 --- a/ext/mysqli/php_mysqli_structs.h +++ b/ext/mysqli/php_mysqli_structs.h @@ -45,6 +45,13 @@ #include "mysqli_libmysql.h" #endif +#ifdef PHP_MYSQL_UNIX_SOCK_ADDR +#ifdef MYSQL_UNIX_ADDR +#undef MYSQL_UNIX_ADDR +#endif +#define MYSQL_UNIX_ADDR PHP_MYSQL_UNIX_SOCK_ADDR +#endif + #include "php_mysqli.h" /* character set support */ diff --git a/ext/pdo_mysql/config.m4 b/ext/pdo_mysql/config.m4 index 287a770d81f..99c68bc9bad 100755 --- a/ext/pdo_mysql/config.m4 +++ b/ext/pdo_mysql/config.m4 @@ -47,7 +47,11 @@ Note that the MySQL client library is not bundled anymore!]) PDO_MYSQL_SOCKET=`$PDO_MYSQL_CONFIG --socket` fi - AC_DEFINE_UNQUOTED(PDO_MYSQL_UNIX_ADDR, "$PDO_MYSQL_SOCKET", [ ]) + if test "$PHP_MYSQL_SOCK" != "no" && test "$PHP_MYSQL_SOCK" != "yes"; then + AC_DEFINE_UNQUOTED(PDO_MYSQL_UNIX_ADDR, "$PHP_MYSQL_SOCK", [ ]) + else + AC_DEFINE_UNQUOTED(PDO_MYSQL_UNIX_ADDR, "$PDO_MYSQL_SOCKET", [ ]) + fi PHP_ADD_LIBRARY_WITH_PATH(mysqlclient, $PDO_MYSQL_LIB_DIR, PDO_MYSQL_SHARED_LIBADD) PHP_ADD_INCLUDE($PDO_MYSQL_INC_DIR) diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c index 789cd5163ff..81ea1d3657c 100755 --- a/ext/pdo_mysql/mysql_driver.c +++ b/ext/pdo_mysql/mysql_driver.c @@ -417,13 +417,6 @@ static struct pdo_dbh_methods mysql_methods = { pdo_mysql_check_liveness }; -#ifndef PDO_MYSQL_UNIX_ADDR -# ifdef PHP_WIN32 -# define PDO_MYSQL_UNIX_ADDR "MySQL" -# else -# define PDO_MYSQL_UNIX_ADDR "/tmp/mysql.sock" -# endif -#endif static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_DC) /* {{{ */ { diff --git a/ext/pdo_mysql/pdo_mysql.c b/ext/pdo_mysql/pdo_mysql.c index 1b293a21b46..bff9f10ac74 100755 --- a/ext/pdo_mysql/pdo_mysql.c +++ b/ext/pdo_mysql/pdo_mysql.c @@ -101,7 +101,8 @@ PHP_MSHUTDOWN_FUNCTION(pdo_mysql) PHP_MINFO_FUNCTION(pdo_mysql) { php_info_print_table_start(); - php_info_print_table_header(2, "PDO Driver for MySQL 3.x Client Libraries", "enabled"); + php_info_print_table_header(2, "PDO Driver for MySQL, client library version", mysql_get_client_info()); + php_info_print_table_row(2, "MYSQL_SOCKET", PDO_MYSQL_UNIX_ADDR); php_info_print_table_end(); } /* }}} */ diff --git a/ext/pdo_mysql/php_pdo_mysql_int.h b/ext/pdo_mysql/php_pdo_mysql_int.h index d896bbc15ac..65bcbd2a2b0 100755 --- a/ext/pdo_mysql/php_pdo_mysql_int.h +++ b/ext/pdo_mysql/php_pdo_mysql_int.h @@ -87,4 +87,13 @@ enum { PDO_MYSQL_ATTR_MAX_BUFFER_SIZE, PDO_MYSQL_ATTR_DIRECT_QUERY, }; + +#ifndef PDO_MYSQL_UNIX_ADDR +# ifdef PHP_WIN32 +# define PDO_MYSQL_UNIX_ADDR "MySQL" +# else +# define PDO_MYSQL_UNIX_ADDR "/tmp/mysql.sock" +# endif +#endif + #endif