From 6e2ff39e3ec0a909574de457a6f54230d3280bee Mon Sep 17 00:00:00 2001 From: Michael Wallner Date: Thu, 1 Jun 2006 19:14:48 +0000 Subject: [PATCH] - Fix bug #37630: MySQL extensions should link against thread safe client libs if built with ZTS --- NEWS | 2 ++ ext/mysql/config.m4 | 6 +++++- ext/mysql/php_mysql.c | 13 ------------- ext/mysqli/config.m4 | 8 ++++++-- ext/pdo_mysql/config.m4 | 14 ++++++++++---- 5 files changed, 23 insertions(+), 20 deletions(-) diff --git a/NEWS b/NEWS index ad39559f7c..49d6fd5bab 100644 --- a/NEWS +++ b/NEWS @@ -51,6 +51,8 @@ PHP NEWS - Fixed handling of extremely long paths inside tempnam() function. (Ilia) - Fixed bug #37635 (parameter of pcntl signal handler is trashed). (Mike) - Fixed bug #37632 (Protected method access problem). (Marcus) +- Fixed bug #37630 (MySQL extensions should link against thread safe client + libs if built with ZTS). (Mike) - Fixed bug #37620 (mysqli_ssl_set validation is inappropriate). (Georg) - Fixed bug #37616 (DATE_RFC822 does not product RFC 822 dates). (Hannes Magnusson, Derick) diff --git a/ext/mysql/config.m4 b/ext/mysql/config.m4 index 3e8bbdfb20..5870be02e1 100644 --- a/ext/mysql/config.m4 +++ b/ext/mysql/config.m4 @@ -86,7 +86,11 @@ if test "$PHP_MYSQL" != "no"; then Note that the MySQL client library is not bundled anymore!]) fi - MYSQL_LIBNAME=mysqlclient + if test "$enable_maintainer_zts" = "yes"; then + MYSQL_LIBNAME=mysqlclient_r + else + MYSQL_LIBNAME=mysqlclient + fi case $host_alias in *netware*[)] MYSQL_LIBNAME=mysql diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c index bef974313b..023a87e9fb 100644 --- a/ext/mysql/php_mysql.c +++ b/ext/mysql/php_mysql.c @@ -392,13 +392,6 @@ ZEND_MODULE_STARTUP_D(mysql) REGISTER_LONG_CONSTANT("MYSQL_CLIENT_INTERACTIVE", CLIENT_INTERACTIVE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MYSQL_CLIENT_IGNORE_SPACE", CLIENT_IGNORE_SPACE, CONST_CS | CONST_PERSISTENT); - -#ifdef ZTS -# if MYSQL_VERSION_ID >= 40000 - mysql_thread_init(); -# endif -#endif - return SUCCESS; } /* }}} */ @@ -407,12 +400,6 @@ ZEND_MODULE_STARTUP_D(mysql) */ PHP_MSHUTDOWN_FUNCTION(mysql) { -#ifdef ZTS -# if MYSQL_VERSION_ID >= 40000 - mysql_thread_end(); -# endif -#endif - UNREGISTER_INI_ENTRIES(); return SUCCESS; } diff --git a/ext/mysqli/config.m4 b/ext/mysqli/config.m4 index cfca74b476..2c1af87054 100644 --- a/ext/mysqli/config.m4 +++ b/ext/mysqli/config.m4 @@ -22,9 +22,13 @@ dnl fi MYSQL_CONFIG=$PHP_MYSQLI fi + MYSQL_LIB_NAME='mysqlclient' if test "$PHP_EMBEDDED_MYSQLI" = "yes"; then AC_DEFINE(HAVE_EMBEDDED_MYSQLI, 1, [embedded MySQL support enabled]) MYSQL_LIB_CFG='--libmysqld-libs' + elif test "$enable_maintainer_zts" = "yes"; then + MYSQL_LIB_CFG='--libs_r' + MYSQL_LIB_NAME='mysqlclient_r' else MYSQL_LIB_CFG='--libs' fi @@ -40,12 +44,12 @@ dnl fi dnl dnl Check the library dnl - PHP_CHECK_LIBRARY(mysqlclient, mysql_set_server_option, + PHP_CHECK_LIBRARY($MYSQL_LIB_NAME, mysql_set_server_option, [ PHP_EVAL_INCLINE($MYSQLI_INCLINE) PHP_EVAL_LIBLINE($MYSQLI_LIBLINE, MYSQLI_SHARED_LIBADD) AC_DEFINE(HAVE_MYSQLILIB,1,[ ]) - PHP_CHECK_LIBRARY(mysqlclient, mysql_stmt_field_count, + PHP_CHECK_LIBRARY($MYSQL_LIB_NAME, mysql_stmt_field_count, [ ],[ AC_MSG_ERROR([MySQLI doesn't support versions < 4.1.3 (for MySQL 4.1.x) and < 5.0.1 for (MySQL 5.0.x) anymore. Please update your libraries.]) ],[$MYSQLI_LIBLINE]) diff --git a/ext/pdo_mysql/config.m4 b/ext/pdo_mysql/config.m4 index c239944279..44471d7430 100755 --- a/ext/pdo_mysql/config.m4 +++ b/ext/pdo_mysql/config.m4 @@ -5,7 +5,7 @@ dnl if test "$PHP_PDO" != "no"; then AC_DEFUN([PDO_MYSQL_LIB_CHK], [ - str="$PDO_MYSQL_DIR/$1/libmysqlclient.*" + str="$PDO_MYSQL_DIR/$1/libmysqlclient*" for j in `echo $str`; do if test -r $j; then PDO_MYSQL_LIB_DIR=$MYSQL_DIR/$1 @@ -53,8 +53,14 @@ if test "$PHP_PDO_MYSQL" != "no"; then if test "x$SED" = "x"; then AC_PATH_PROG(SED, sed) fi + if test "$enable_maintainer_zts" = "yes"; then + PDO_MYSQL_LIBNAME=mysqlclient_r + PDO_MYSQL_LIBS=`$PDO_MYSQL_CONFIG --libs_r | $SED -e "s/'//g"` + else + PDO_MYSQL_LIBNAME=mysqlclient + PDO_MYSQL_LIBS=`$PDO_MYSQL_CONFIG --libs | $SED -e "s/'//g"` + fi PDO_MYSQL_INCLUDE=`$PDO_MYSQL_CONFIG --cflags | $SED -e "s/'//g"` - PDO_MYSQL_LIBS=`$PDO_MYSQL_CONFIG --libs | $SED -e "s/'//g"` PDO_MYSQL_SOCKET=`$PDO_MYSQL_CONFIG --socket` elif test -z "$PDO_MYSQL_DIR"; then AC_MSG_RESULT([not found]) @@ -80,7 +86,7 @@ if test "$PHP_PDO_MYSQL" != "no"; then AC_MSG_ERROR([Unable to find your mysql installation]) fi - PHP_ADD_LIBRARY_WITH_PATH(mysqlclient, $PDO_MYSQL_LIB_DIR, PDO_MYSQL_SHARED_LIBADD) + PHP_ADD_LIBRARY_WITH_PATH($PDO_MYSQL_LIBNAME, $PDO_MYSQL_LIB_DIR, PDO_MYSQL_SHARED_LIBADD) PHP_ADD_INCLUDE($PDO_MYSQL_INC_DIR) PDO_MYSQL_INCLUDE=-I$PDO_MYSQL_INC_DIR fi @@ -88,7 +94,7 @@ if test "$PHP_PDO_MYSQL" != "no"; then AC_DEFINE_UNQUOTED(PDO_MYSQL_UNIX_ADDR, "$PDO_MYSQL_SOCKET", [ ]) - PHP_CHECK_LIBRARY(mysqlclient, mysql_query, + PHP_CHECK_LIBRARY($PDO_MYSQL_LIBNAME, mysql_query, [ PHP_EVAL_LIBLINE($PDO_MYSQL_LIBS, PDO_MYSQL_SHARED_LIBADD) ],[ -- 2.40.0