From 1be03fd099ac59829b16cbf6fe076f262543ee42 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 6 Nov 2024 14:41:05 +0100 Subject: [PATCH] Force register_argc_argv to Off on FPM + Apache2 + default to false --- main/main.c | 2 +- php.ini-development | 2 +- php.ini-production | 2 +- sapi/apache2handler/sapi_apache2.c | 8 ++++++++ sapi/fpm/fpm/fpm_main.c | 1 + 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/main/main.c b/main/main.c index 0b38f303c58fc..2e0061d8e0290 100644 --- a/main/main.c +++ b/main/main.c @@ -753,7 +753,7 @@ PHP_INI_BEGIN() STD_PHP_INI_BOOLEAN("report_zend_debug", "0", PHP_INI_ALL, OnUpdateBool, report_zend_debug, php_core_globals, core_globals) STD_PHP_INI_ENTRY("output_buffering", "0", PHP_INI_PERDIR|PHP_INI_SYSTEM, OnUpdateLong, output_buffering, php_core_globals, core_globals) STD_PHP_INI_ENTRY("output_handler", NULL, PHP_INI_PERDIR|PHP_INI_SYSTEM, OnUpdateString, output_handler, php_core_globals, core_globals) - STD_PHP_INI_BOOLEAN("register_argc_argv", "1", PHP_INI_PERDIR|PHP_INI_SYSTEM, OnUpdateBool, register_argc_argv, php_core_globals, core_globals) + STD_PHP_INI_BOOLEAN("register_argc_argv", "0", PHP_INI_PERDIR|PHP_INI_SYSTEM, OnUpdateBool, register_argc_argv, php_core_globals, core_globals) STD_PHP_INI_BOOLEAN("auto_globals_jit", "1", PHP_INI_PERDIR|PHP_INI_SYSTEM, OnUpdateBool, auto_globals_jit, php_core_globals, core_globals) STD_PHP_INI_BOOLEAN("short_open_tag", DEFAULT_SHORT_OPEN_TAG, PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateBool, short_tags, zend_compiler_globals, compiler_globals) diff --git a/php.ini-development b/php.ini-development index 5adb11d215697..8b8563d3df8b9 100644 --- a/php.ini-development +++ b/php.ini-development @@ -125,7 +125,7 @@ ; Production Value: 4096 ; register_argc_argv -; Default Value: On +; Default Value: Off ; Development Value: Off ; Production Value: Off diff --git a/php.ini-production b/php.ini-production index e4ffc1084b13a..1b3c7abb2af85 100644 --- a/php.ini-production +++ b/php.ini-production @@ -125,7 +125,7 @@ ; Production Value: 4096 ; register_argc_argv -; Default Value: On +; Default Value: Off ; Development Value: Off ; Production Value: Off diff --git a/sapi/apache2handler/sapi_apache2.c b/sapi/apache2handler/sapi_apache2.c index 1d85a92ebf4d8..c6b3cbad11cb1 100644 --- a/sapi/apache2handler/sapi_apache2.c +++ b/sapi/apache2handler/sapi_apache2.c @@ -49,6 +49,7 @@ #include "http_core.h" #include "ap_mpm.h" +#include "php_ini_builder.h" #include "php_apache.h" /* UnixWare define shutdown to _shutdown, which causes problems later @@ -61,6 +62,9 @@ #define PHP_SOURCE_MAGIC_TYPE "application/x-httpd-php-source" #define PHP_SCRIPT "php-script" +static const char HARDCODED_INI[] = + "register_argc_argv=0\n"; + /* A way to specify the location of the php.ini dir in an apache directive */ char *apache2_php_ini_path_override = NULL; #if defined(PHP_WIN32) && defined(ZTS) @@ -466,6 +470,7 @@ php_apache_server_startup(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp { void *data = NULL; const char *userdata_key = "apache2hook_post_config"; + struct php_ini_builder ini_builder; /* Apache will load, unload and then reload a DSO module. This * prevents us from starting PHP until the second load. */ @@ -480,6 +485,7 @@ php_apache_server_startup(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp return OK; } + php_ini_builder_init(&ini_builder); /* Set up our overridden path. */ if (apache2_php_ini_path_override) { apache2_sapi_module.php_ini_path_override = apache2_php_ini_path_override; @@ -499,6 +505,8 @@ php_apache_server_startup(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp zend_signal_startup(); sapi_startup(&apache2_sapi_module); + php_ini_builder_prepend_literal(&ini_builder, HARDCODED_INI); + if (apache2_sapi_module.startup(&apache2_sapi_module) != SUCCESS) { return DONE; } diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c index 57006a15c7a08..fcddf99efea7e 100644 --- a/sapi/fpm/fpm/fpm_main.c +++ b/sapi/fpm/fpm/fpm_main.c @@ -1589,6 +1589,7 @@ int main(int argc, char *argv[]) zend_signal_startup(); sapi_startup(&cgi_sapi_module); + php_ini_builder_prepend_literal(&ini_builder, HARDCODED_INI); cgi_sapi_module.php_ini_path_override = NULL; cgi_sapi_module.php_ini_ignore_cwd = 1;

AltStyle によって変換されたページ (->オリジナル) /