From: Dmitry Stogov Date: Wed, 25 May 2005 17:41:50 +0000 (+0000) Subject: Fixed bug #29971 (variables_order behaviour) X-Git-Tag: php-5.0.1b1~168 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1add2cc70ecef47d15c2cbbbc0a2595432dce009;p=php Fixed bug #29971 (variables_order behaviour) --- diff --git a/main/php_variables.c b/main/php_variables.c index 4feac0fbab..0283944615 100644 --- a/main/php_variables.c +++ b/main/php_variables.c @@ -705,7 +705,15 @@ int php_hash_environment(TSRMLS_D) static zend_bool php_auto_globals_create_server(char *name, uint name_len TSRMLS_DC) { - php_register_server_variables(TSRMLS_C); + if (strchr(PG(variables_order),'S') || strchr(PG(variables_order),'s')) { + php_register_server_variables(TSRMLS_C); + } else { + zval *server_vars=NULL; + ALLOC_ZVAL(server_vars); + array_init(server_vars); + INIT_PZVAL(server_vars); + PG(http_globals)[TRACK_VARS_SERVER] = server_vars; + } zend_hash_update(&EG(symbol_table), name, name_len + 1, &PG(http_globals)[TRACK_VARS_SERVER], sizeof(zval *), NULL); PG(http_globals)[TRACK_VARS_SERVER]->refcount++; @@ -726,7 +734,9 @@ static zend_bool php_auto_globals_create_env(char *name, uint name_len TSRMLS_DC INIT_PZVAL(env_vars); PG(http_globals)[TRACK_VARS_ENV] = env_vars; - php_import_environment_variables(PG(http_globals)[TRACK_VARS_ENV] TSRMLS_CC); + if (strchr(PG(variables_order),'E') || strchr(PG(variables_order),'e')) { + php_import_environment_variables(PG(http_globals)[TRACK_VARS_ENV] TSRMLS_CC); + } zend_hash_update(&EG(symbol_table), name, name_len + 1, &PG(http_globals)[TRACK_VARS_ENV], sizeof(zval *), NULL); PG(http_globals)[TRACK_VARS_ENV]->refcount++; diff --git a/tests/basic/bug29971.phpt b/tests/basic/bug29971.phpt new file mode 100755 index 0000000000..d4b654bdb1 --- /dev/null +++ b/tests/basic/bug29971.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug #29971 (variables_order behaviour) +--INI-- +variables_order=GPC +--FILE-- + +--EXPECT-- +array(0) { +} +array(0) { +} +string(3) "GPC"