Skip to content

Commit 03cc01d

Browse files
committed
- Fixed FS#3320 - Improve php.ini parser.
1 parent c926259 commit 03cc01d

File tree

5 files changed

+33
-2
lines changed

5 files changed

+33
-2
lines changed

interface/web/sites/lib/lang/de_web_domain.lng

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,4 +126,5 @@ $wb['added_date_txt'] = 'Hinzugefügt am';
126126
$wb['backup_excludes_txt'] = 'Auszuschließende Verzeichnisse';
127127
$wb['backup_excludes_note_txt'] = '(Mehrere Verzeichnisse mit Kommas trennen. Beispiel: web/cache/*,web/backup)';
128128
$wb['backup_excludes_error_regex'] = 'Die auszuschließenden Verzeichnisse enthalten ungültige Zeichen.';
129+
$wb['invalid_custom_php_ini_settings_txt'] = 'Unzulässige php.ini-Einstellungen';
129130
?>

interface/web/sites/lib/lang/en_web_domain.lng

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,4 +126,5 @@ $wb['added_date_txt'] = 'Added date';
126126
$wb['backup_excludes_txt'] = 'Excluded Directories';
127127
$wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)';
128128
$wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.';
129+
$wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings';
129130
?>

interface/web/sites/web_domain_edit.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -726,6 +726,35 @@ function onSubmit() {
726726
$app->tform->errorMessage .= $app->tform->lng("invalid_rewrite_rules_txt").'<br>';
727727
}
728728
}
729+
730+
// check custom php.ini settings
731+
if(isset($this->dataRecord['custom_php_ini']) && trim($this->dataRecord['custom_php_ini']) != '') {
732+
$custom_php_ini_settings = trim($this->dataRecord['custom_php_ini']);
733+
$custom_php_ini_settings_are_valid = true;
734+
// Make sure we only have Unix linebreaks
735+
$custom_php_ini_settings = str_replace("\r\n", "\n", $custom_php_ini_settings);
736+
$custom_php_ini_settings = str_replace("\r", "\n", $custom_php_ini_settings);
737+
$custom_php_ini_settings_lines = explode("\n", $custom_php_ini_settings);
738+
if(is_array($custom_php_ini_settings_lines) && !empty($custom_php_ini_settings_lines)){
739+
foreach($custom_php_ini_settings_lines as $custom_php_ini_settings_line){
740+
if(trim($custom_php_ini_settings_line) == '') continue;
741+
if(substr(trim($custom_php_ini_settings_line),0,1) == ';') continue;
742+
// empty value
743+
if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*;*\s*$@', $custom_php_ini_settings_line)) continue;
744+
// value inside ""
745+
if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*".*"\s*;*\s*$@', $custom_php_ini_settings_line)) continue;
746+
// value inside ''
747+
if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*\'.*\'\s*;*\s*$@', $custom_php_ini_settings_line)) continue;
748+
// everything else
749+
if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*[-a-zA-Z0-9~&=_\@/,.#\s]*\s*;*\s*$@', $custom_php_ini_settings_line)) continue;
750+
$custom_php_ini_settings_are_valid = false;
751+
break;
752+
}
753+
}
754+
if(!$custom_php_ini_settings_are_valid){
755+
$app->tform->errorMessage .= $app->tform->lng("invalid_custom_php_ini_settings_txt").'<br>';
756+
}
757+
}
729758

730759
parent::onSubmit();
731760
}

server/plugins-available/apache2_plugin.inc.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2668,7 +2668,7 @@ private function php_fpm_pool_update ($data, $web_config, $pool_dir, $pool_name,
26682668
if(substr($ini_setting, 0, 1) == ';') continue;
26692669
if(substr($ini_setting, 0, 1) == '#') continue;
26702670
if(substr($ini_setting, 0, 2) == '//') continue;
2671-
list($key, $value) = explode('=', $ini_setting);
2671+
list($key, $value) = explode('=', $ini_setting, 2);
26722672
if($value){
26732673
$value = trim($value);
26742674
$key = trim($key);

server/plugins-available/nginx_plugin.inc.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2367,7 +2367,7 @@ private function php_fpm_pool_update ($data, $web_config, $pool_dir, $pool_name,
23672367
if(substr($ini_setting, 0, 1) == ';') continue;
23682368
if(substr($ini_setting, 0, 1) == '#') continue;
23692369
if(substr($ini_setting, 0, 2) == '//') continue;
2370-
list($key, $value) = explode('=', $ini_setting);
2370+
list($key, $value) = explode('=', $ini_setting, 2);
23712371
if($value){
23722372
$value = trim($value);
23732373
$key = trim($key);

0 commit comments

Comments
 (0)