From d500b5c62d10d9acdf55e76e8a4ebd9f11b2f990 Mon Sep 17 00:00:00 2001 From: Marina Glancy Date: Wed, 21 Apr 2021 11:49:57 +0200 Subject: [PATCH] MDL-71390 core: raise max_input_vars requirement for Moodle 3.11 --- admin/environment.xml | 2 ++ lang/en/admin.php | 2 ++ lib/upgradelib.php | 24 ++++++++++++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/admin/environment.xml b/admin/environment.xml index 3a71aef8e67..495db2b5079 100644 --- a/admin/environment.xml +++ b/admin/environment.xml @@ -3527,6 +3527,8 @@ + + diff --git a/lang/en/admin.php b/lang/en/admin.php index 3b889bc6839..843b65f25a8 100644 --- a/lang/en/admin.php +++ b/lang/en/admin.php @@ -1148,6 +1148,8 @@ $string['sessionhandling'] = 'Session handling'; $string['sessiontimeout'] = 'Timeout'; $string['settingdependenton'] = 'This setting may be hidden, based on the value of {$a}.'; $string['settingfileuploads'] = 'File uploading is required for normal operation, please enable it in PHP configuration.'; +$string['settingmaxinputvars'] = 'PHP setting max_input_vars is recommended to be at least 5000.'; +$string['settingmaxinputvarsrequired'] = 'PHP setting max_input_vars must be at least 5000.'; $string['settingmemorylimit'] = 'Insufficient memory detected, please set higher memory limit in PHP settings.'; $string['settingsafemode'] = 'Moodle is not fully compatible with safe mode, please ask server administrator to turn it off. Running Moodle under safe mode is not supported, please expect various problems if you do so.'; $string['setupsearchengine'] = 'Setup search engine'; diff --git a/lib/upgradelib.php b/lib/upgradelib.php index 62931e718dc..5b8445b14e1 100644 --- a/lib/upgradelib.php +++ b/lib/upgradelib.php @@ -2612,3 +2612,27 @@ function check_libcurl_version(environment_results $result) { return null; } + +/** + * Environment check for the php setting max_input_vars + * + * @param environment_results $result + * @return environment_results|null + */ +function check_max_input_vars(environment_results $result) { + $max = (int)ini_get('max_input_vars'); + if ($max < 5000) { + $result->setInfo('max_input_vars'); + $result->setStatus(false); + if (PHP_VERSION_ID >= 80000) { + // For PHP8 this check is required. + $result->setLevel('required'); + $result->setFeedbackStr('settingmaxinputvarsrequired'); + } else { + // For PHP7 this check is optional (recommended). + $result->setFeedbackStr('settingmaxinputvars'); + } + return $result; + } + return null; +}