diff --git a/interface/web/sites/lib/lang/de_web_domain.lng b/interface/web/sites/lib/lang/de_web_domain.lng index 986b64e7f05465b68e37230768dfe505cf24b1c1..f7d002e40a2647d16a7a8bb3c7e1250888e8a720 100644 --- a/interface/web/sites/lib/lang/de_web_domain.lng +++ b/interface/web/sites/lib/lang/de_web_domain.lng @@ -126,4 +126,5 @@ $wb['added_date_txt'] = 'Hinzugefügt am'; $wb['backup_excludes_txt'] = 'Auszuschließende Verzeichnisse'; $wb['backup_excludes_note_txt'] = '(Mehrere Verzeichnisse mit Kommas trennen. Beispiel: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'Die auszuschließenden Verzeichnisse enthalten ungültige Zeichen.'; +$wb['invalid_custom_php_ini_settings_txt'] = 'Unzulässige php.ini-Einstellungen'; ?> \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_web_domain.lng b/interface/web/sites/lib/lang/en_web_domain.lng index 330b820b3bcec928a9b4c117da3a4d1120fc3035..8c8f90eb0fd69b78b1b9546b55d8f13ca69693ec 100644 --- a/interface/web/sites/lib/lang/en_web_domain.lng +++ b/interface/web/sites/lib/lang/en_web_domain.lng @@ -126,4 +126,5 @@ $wb['added_date_txt'] = 'Added date'; $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; +$wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; ?> \ No newline at end of file diff --git a/interface/web/sites/web_domain_edit.php b/interface/web/sites/web_domain_edit.php index f372303c15799628daf8b4bfac8c2e29587b6c44..630c9bcbf0707598dddce2d2521004119bf90065 100644 --- a/interface/web/sites/web_domain_edit.php +++ b/interface/web/sites/web_domain_edit.php @@ -726,6 +726,35 @@ class page_action extends tform_actions { $app->tform->errorMessage .= $app->tform->lng("invalid_rewrite_rules_txt").'<br>'; } } + + // check custom php.ini settings + if(isset($this->dataRecord['custom_php_ini']) && trim($this->dataRecord['custom_php_ini']) != '') { + $custom_php_ini_settings = trim($this->dataRecord['custom_php_ini']); + $custom_php_ini_settings_are_valid = true; + // Make sure we only have Unix linebreaks + $custom_php_ini_settings = str_replace("\r\n", "\n", $custom_php_ini_settings); + $custom_php_ini_settings = str_replace("\r", "\n", $custom_php_ini_settings); + $custom_php_ini_settings_lines = explode("\n", $custom_php_ini_settings); + if(is_array($custom_php_ini_settings_lines) && !empty($custom_php_ini_settings_lines)){ + foreach($custom_php_ini_settings_lines as $custom_php_ini_settings_line){ + if(trim($custom_php_ini_settings_line) == '') continue; + if(substr(trim($custom_php_ini_settings_line),0,1) == ';') continue; + // empty value + if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*;*\s*$@', $custom_php_ini_settings_line)) continue; + // value inside "" + if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*".*"\s*;*\s*$@', $custom_php_ini_settings_line)) continue; + // value inside '' + if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*\'.*\'\s*;*\s*$@', $custom_php_ini_settings_line)) continue; + // everything else + if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*[-a-zA-Z0-9~&=_\@/,.#\s]*\s*;*\s*$@', $custom_php_ini_settings_line)) continue; + $custom_php_ini_settings_are_valid = false; + break; + } + } + if(!$custom_php_ini_settings_are_valid){ + $app->tform->errorMessage .= $app->tform->lng("invalid_custom_php_ini_settings_txt").'<br>'; + } + } parent::onSubmit(); } diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 3c83dc16d98c59e8da0a1df81900b769af9dbb20..c6a253a05fe1e1e9fd55183fa57d3f1d82d29834 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -2668,7 +2668,7 @@ class apache2_plugin { if(substr($ini_setting, 0, 1) == ';') continue; if(substr($ini_setting, 0, 1) == '#') continue; if(substr($ini_setting, 0, 2) == '//') continue; - list($key, $value) = explode('=', $ini_setting); + list($key, $value) = explode('=', $ini_setting, 2); if($value){ $value = trim($value); $key = trim($key); diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index d66521b9e25e17d2b829e067969f3b6b1f383f97..594629c8b1c31f1f5ec39155b602b761463d0957 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -2367,7 +2367,7 @@ class nginx_plugin { if(substr($ini_setting, 0, 1) == ';') continue; if(substr($ini_setting, 0, 1) == '#') continue; if(substr($ini_setting, 0, 2) == '//') continue; - list($key, $value) = explode('=', $ini_setting); + list($key, $value) = explode('=', $ini_setting, 2); if($value){ $value = trim($value); $key = trim($key);