mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
main: Deprecate deriving $_SERVER['argc'] and $_SERVER['argv'] from the query string (#19606)
* main: Ignore `register_argc_argv` when `SG(request_info).argc` is available * sapi: Remove hardcoded `register_argc_argv` for CLI SAPIs This INI is ignored since the previous commit, which makes the hardcoded setting obsolete. * main: Deprecate deriving $_SERVER['argc'] and $_SERVER['argv'] from the query string RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_register_argc_argv_ini_directive * main: Adjust deprecation message for `register_argc_argv` * NEWS/UPGRADING
This commit is contained in:
@@ -785,10 +785,13 @@ static void php_autoglobal_merge(HashTable *dest, HashTable *src)
|
||||
PHPAPI zend_result php_hash_environment(void)
|
||||
{
|
||||
memset(PG(http_globals), 0, sizeof(PG(http_globals)));
|
||||
/* Register $argc and $argv for CLI SAPIs. $_SERVER['argc'] and $_SERVER['argv']
|
||||
* will be registered in php_auto_globals_create_server() which clears
|
||||
* PG(http_globals)[TRACK_VARS_SERVER] anyways, making registration at this point
|
||||
* useless.
|
||||
*/
|
||||
php_build_argv(NULL, NULL);
|
||||
zend_activate_auto_globals();
|
||||
if (PG(register_argc_argv)) {
|
||||
php_build_argv(SG(request_info).query_string, &PG(http_globals)[TRACK_VARS_SERVER]);
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
/* }}} */
|
||||
@@ -875,19 +878,18 @@ static bool php_auto_globals_create_server(zend_string *name)
|
||||
if (PG(variables_order) && (strchr(PG(variables_order),'S') || strchr(PG(variables_order),'s'))) {
|
||||
php_register_server_variables();
|
||||
|
||||
if (PG(register_argc_argv)) {
|
||||
if (SG(request_info).argc) {
|
||||
zval *argc, *argv;
|
||||
if (SG(request_info).argc) {
|
||||
zval *argc, *argv;
|
||||
|
||||
if ((argc = zend_hash_find_ex_ind(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGC), 1)) != NULL &&
|
||||
(argv = zend_hash_find_ex_ind(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGV), 1)) != NULL) {
|
||||
Z_ADDREF_P(argv);
|
||||
zend_hash_update(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), ZSTR_KNOWN(ZEND_STR_ARGV), argv);
|
||||
zend_hash_update(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), ZSTR_KNOWN(ZEND_STR_ARGC), argc);
|
||||
}
|
||||
} else {
|
||||
php_build_argv(SG(request_info).query_string, &PG(http_globals)[TRACK_VARS_SERVER]);
|
||||
if ((argc = zend_hash_find_ex_ind(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGC), 1)) != NULL &&
|
||||
(argv = zend_hash_find_ex_ind(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGV), 1)) != NULL) {
|
||||
Z_ADDREF_P(argv);
|
||||
zend_hash_update(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), ZSTR_KNOWN(ZEND_STR_ARGV), argv);
|
||||
zend_hash_update(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), ZSTR_KNOWN(ZEND_STR_ARGC), argc);
|
||||
}
|
||||
} else if (PG(register_argc_argv)) {
|
||||
zend_error(E_DEPRECATED, "Deriving $_SERVER['argv'] from the query string is deprecated. Configure register_argc_argv=0 to turn this message off");
|
||||
php_build_argv(SG(request_info).query_string, &PG(http_globals)[TRACK_VARS_SERVER]);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user