mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Merge branch 'PHP-8.1'
* PHP-8.1: Fix #81658: MYSQL_OPT_LOAD_DATA_LOCAL_DIR not available in MariaDB
This commit is contained in:
commit
dea548be60
5 changed files with 13 additions and 6 deletions
|
@ -596,7 +596,7 @@ PHP_MINIT_FUNCTION(mysqli)
|
|||
REGISTER_LONG_CONSTANT("MYSQLI_READ_DEFAULT_FILE", MYSQL_READ_DEFAULT_FILE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("MYSQLI_OPT_CONNECT_TIMEOUT", MYSQL_OPT_CONNECT_TIMEOUT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOCAL_INFILE", MYSQL_OPT_LOCAL_INFILE, CONST_CS | CONST_PERSISTENT);
|
||||
#if MYSQL_VERSION_ID >= 80021 || defined(MYSQLI_USE_MYSQLND)
|
||||
#if (MYSQL_VERSION_ID >= 80021 && !defined(MARIADB_BASE_VERSION)) || defined(MYSQLI_USE_MYSQLND)
|
||||
REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOAD_DATA_LOCAL_DIR", MYSQL_OPT_LOAD_DATA_LOCAL_DIR, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
REGISTER_LONG_CONSTANT("MYSQLI_INIT_COMMAND", MYSQL_INIT_COMMAND, CONST_CS | CONST_PERSISTENT);
|
||||
|
@ -772,6 +772,12 @@ PHP_MINIT_FUNCTION(mysqli)
|
|||
REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_RELEASE", TRANS_COR_RELEASE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_NO_RELEASE", TRANS_COR_NO_RELEASE, CONST_CS | CONST_PERSISTENT);
|
||||
|
||||
#ifdef MARIADB_BASE_VERSION
|
||||
REGISTER_BOOL_CONSTANT("MYSQLI_IS_MARIADB", 1, CONST_CS | CONST_PERSISTENT);
|
||||
#else
|
||||
REGISTER_BOOL_CONSTANT("MYSQLI_IS_MARIADB", 0, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef MYSQLI_USE_MYSQLND
|
||||
mysqlnd_reverse_api_register_api(&mysqli_reverse_api);
|
||||
|
|
|
@ -1720,7 +1720,7 @@ static int mysqli_options_get_option_zval_type(int option)
|
|||
#if MYSQL_VERSION_ID > 50605 || defined(MYSQLI_USE_MYSQLND)
|
||||
case MYSQL_SERVER_PUBLIC_KEY:
|
||||
#endif
|
||||
#if MYSQL_VERSION_ID >= 80021 || defined(MYSQLI_USE_MYSQLND)
|
||||
#if (MYSQL_VERSION_ID >= 80021 && !defined(MARIADB_BASE_VERSION)) || defined(MYSQLI_USE_MYSQLND)
|
||||
case MYSQL_OPT_LOAD_DATA_LOCAL_DIR:
|
||||
#endif
|
||||
return IS_STRING;
|
||||
|
|
|
@ -333,7 +333,7 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, bool is_real_connect, b
|
|||
unsigned int allow_local_infile = MyG(allow_local_infile);
|
||||
mysql_options(mysql->mysql, MYSQL_OPT_LOCAL_INFILE, (char *)&allow_local_infile);
|
||||
|
||||
#if MYSQL_VERSION_ID >= 80021 || defined(MYSQLI_USE_MYSQLND)
|
||||
#if (MYSQL_VERSION_ID >= 80021 && !defined(MARIADB_BASE_VERSION)) || defined(MYSQLI_USE_MYSQLND)
|
||||
if (MyG(local_infile_directory) && !php_check_open_basedir(MyG(local_infile_directory))) {
|
||||
mysql_options(mysql->mysql, MYSQL_OPT_LOAD_DATA_LOCAL_DIR, MyG(local_infile_directory));
|
||||
}
|
||||
|
|
|
@ -47,6 +47,7 @@ $expected_constants = array(
|
|||
"MYSQLI_GROUP_FLAG" => true,
|
||||
"MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED"=> true,
|
||||
"MYSQLI_SERVER_QUERY_NO_INDEX_USED" => true,
|
||||
"MYSQLI_IS_MARIADB" => true,
|
||||
|
||||
"MYSQLI_TYPE_DECIMAL" => true,
|
||||
"MYSQLI_TYPE_TINY" => true,
|
||||
|
@ -180,7 +181,7 @@ if ($IS_MYSQLND) {
|
|||
$expected_constants["MYSQLI_TYPE_JSON"] = true;
|
||||
}
|
||||
|
||||
if ($version > 80021 || $IS_MYSQLND) {
|
||||
if (($version > 80021 && $constants['mysqli']['MYSQLI_IS_MARIADB']) || $IS_MYSQLND) {
|
||||
$expected_constants['MYSQLI_OPT_LOAD_DATA_LOCAL_DIR'] = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -544,7 +544,7 @@ static int pdo_mysql_get_attribute(pdo_dbh_t *dbh, zend_long attr, zval *return_
|
|||
ZVAL_BOOL(return_value, H->local_infile);
|
||||
break;
|
||||
|
||||
#if MYSQL_VERSION_ID >= 80021 || defined(PDO_USE_MYSQLND)
|
||||
#if (MYSQL_VERSION_ID >= 80021 && !defined(MARIADB_BASE_VERSION)) || defined(PDO_USE_MYSQLND)
|
||||
case PDO_MYSQL_ATTR_LOCAL_INFILE_DIRECTORY:
|
||||
{
|
||||
const char* local_infile_directory = NULL;
|
||||
|
@ -765,7 +765,7 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options)
|
|||
#endif
|
||||
}
|
||||
|
||||
#if MYSQL_VERSION_ID >= 80021 || defined(PDO_USE_MYSQLND)
|
||||
#if (MYSQL_VERSION_ID >= 80021 && !defined(MARIADB_BASE_VERSION)) || defined(PDO_USE_MYSQLND)
|
||||
zend_string *local_infile_directory = pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_LOCAL_INFILE_DIRECTORY, NULL);
|
||||
if (local_infile_directory && !php_check_open_basedir(ZSTR_VAL(local_infile_directory))) {
|
||||
if (mysql_options(H->server, MYSQL_OPT_LOAD_DATA_LOCAL_DIR, (const char *)ZSTR_VAL(local_infile_directory))) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue