]> granicus.if.org Git - php/commitdiff
Fixed bug #75982 ($_SERVER mostly empty with default variables_order GPCS on FastCGI...
authorDmitry Stogov <dmitry@zend.com>
Fri, 23 Mar 2018 12:17:10 +0000 (15:17 +0300)
committerDmitry Stogov <dmitry@zend.com>
Fri, 23 Mar 2018 12:17:10 +0000 (15:17 +0300)
sapi/cgi/cgi_main.c

index 2682cb674da540501a7260de115a7b6753756c43..2e9cefedeaf6bb7e22a89ddf54d84d5e3663b8c3 100644 (file)
@@ -674,15 +674,17 @@ static void cgi_php_load_env_var(char *var, unsigned int var_len, char *val, uns
 
 static void cgi_php_import_environment_variables(zval *array_ptr)
 {
-       if (Z_TYPE(PG(http_globals)[TRACK_VARS_ENV]) != IS_ARRAY) {
-               zend_is_auto_global_str("_ENV", sizeof("_ENV")-1);
-       }
+       if (PG(variables_order) && (strchr(PG(variables_order),'E') || strchr(PG(variables_order),'e'))) {
+               if (Z_TYPE(PG(http_globals)[TRACK_VARS_ENV]) != IS_ARRAY) {
+                       zend_is_auto_global_str("_ENV", sizeof("_ENV")-1);
+               }
 
-       if (Z_TYPE(PG(http_globals)[TRACK_VARS_ENV]) == IS_ARRAY &&
-               Z_ARR_P(array_ptr) != Z_ARR(PG(http_globals)[TRACK_VARS_ENV])) {
-               zend_array_destroy(Z_ARR_P(array_ptr));
-               Z_ARR_P(array_ptr) = zend_array_dup(Z_ARR(PG(http_globals)[TRACK_VARS_ENV]));
-               return;
+               if (Z_TYPE(PG(http_globals)[TRACK_VARS_ENV]) == IS_ARRAY &&
+                       Z_ARR_P(array_ptr) != Z_ARR(PG(http_globals)[TRACK_VARS_ENV])) {
+                       zend_array_destroy(Z_ARR_P(array_ptr));
+                       Z_ARR_P(array_ptr) = zend_array_dup(Z_ARR(PG(http_globals)[TRACK_VARS_ENV]));
+                       return;
+               }
        }
 
        /* call php's original import as a catch-all */