@@ -785,10 +785,13 @@ static void php_autoglobal_merge(HashTable *dest, HashTable *src)
785785PHPAPI zend_result php_hash_environment (void )
786786{
787787 memset (PG (http_globals ), 0 , sizeof (PG (http_globals )));
788+ /* Register $argc and $argv for CLI SAPIs. $_SERVER['argc'] and $_SERVER['argv']
789+ * will be registered in php_auto_globals_create_server() which clears
790+ * PG(http_globals)[TRACK_VARS_SERVER] anyways, making registration at this point
791+ * useless.
792+ */
793+ php_build_argv (NULL , NULL );
788794 zend_activate_auto_globals ();
789- if (PG (register_argc_argv )) {
790- php_build_argv (SG (request_info ).query_string , & PG (http_globals )[TRACK_VARS_SERVER ]);
791- }
792795 return SUCCESS ;
793796}
794797/* }}} */
@@ -875,19 +878,18 @@ static bool php_auto_globals_create_server(zend_string *name)
875878 if (PG (variables_order ) && (strchr (PG (variables_order ),'S' ) || strchr (PG (variables_order ),'s' ))) {
876879 php_register_server_variables ();
877880
878- if (PG (register_argc_argv )) {
879- if (SG (request_info ).argc ) {
880- zval * argc , * argv ;
881+ if (SG (request_info ).argc ) {
882+ zval * argc , * argv ;
881883
882- if ((argc = zend_hash_find_ex_ind (& EG (symbol_table ), ZSTR_KNOWN (ZEND_STR_ARGC ), 1 )) != NULL &&
883- (argv = zend_hash_find_ex_ind (& EG (symbol_table ), ZSTR_KNOWN (ZEND_STR_ARGV ), 1 )) != NULL ) {
884- Z_ADDREF_P (argv );
885- zend_hash_update (Z_ARRVAL (PG (http_globals )[TRACK_VARS_SERVER ]), ZSTR_KNOWN (ZEND_STR_ARGV ), argv );
886- zend_hash_update (Z_ARRVAL (PG (http_globals )[TRACK_VARS_SERVER ]), ZSTR_KNOWN (ZEND_STR_ARGC ), argc );
887- }
888- } else {
889- php_build_argv (SG (request_info ).query_string , & PG (http_globals )[TRACK_VARS_SERVER ]);
884+ if ((argc = zend_hash_find_ex_ind (& EG (symbol_table ), ZSTR_KNOWN (ZEND_STR_ARGC ), 1 )) != NULL &&
885+ (argv = zend_hash_find_ex_ind (& EG (symbol_table ), ZSTR_KNOWN (ZEND_STR_ARGV ), 1 )) != NULL ) {
886+ Z_ADDREF_P (argv );
887+ zend_hash_update (Z_ARRVAL (PG (http_globals )[TRACK_VARS_SERVER ]), ZSTR_KNOWN (ZEND_STR_ARGV ), argv );
888+ zend_hash_update (Z_ARRVAL (PG (http_globals )[TRACK_VARS_SERVER ]), ZSTR_KNOWN (ZEND_STR_ARGC ), argc );
890889 }
890+ } else if (PG (register_argc_argv )) {
891+ zend_error (E_DEPRECATED , "Deriving $_SERVER['argv'] from the query string is deprecated. Configure register_argc_argv=0 to turn this message off" );
892+ php_build_argv (SG (request_info ).query_string , & PG (http_globals )[TRACK_VARS_SERVER ]);
891893 }
892894
893895 } else {
0 commit comments