]> granicus.if.org Git - php/commitdiff
Fixed bug #29971 (variables_order behaviour)
authorDmitry Stogov <dmitry@php.net>
Wed, 25 May 2005 17:41:50 +0000 (17:41 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 25 May 2005 17:41:50 +0000 (17:41 +0000)
main/php_variables.c
tests/basic/bug29971.phpt [new file with mode: 0755]

index 4feac0fbabb0abfb47d071dc310fef2a2e665b01..0283944615d0a90c848f39aefdcec9c4704a934b 100644 (file)
@@ -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 (executable)
index 0000000..d4b654b
--- /dev/null
@@ -0,0 +1,15 @@
+--TEST--
+Bug #29971 (variables_order behaviour)
+--INI--
+variables_order=GPC
+--FILE--
+<?php
+var_dump($_ENV,$_SERVER);
+var_dump(ini_get("variables_order"));
+?>
+--EXPECT--
+array(0) {
+}
+array(0) {
+}
+string(3) "GPC"