diff options
Diffstat (limited to 'main/php_variables.c')
| -rw-r--r-- | main/php_variables.c | 14 | 
1 files changed, 12 insertions, 2 deletions
| 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++; | 
