From 148754148b2366600f8e459ddfa4efc3aa684155 Mon Sep 17 00:00:00 2001 From: EuroDomenii Date: Thu, 28 Jan 2021 02:52:22 +0200 Subject: [PATCH] Use specific PHP versions, comma separated --- lib/class.ISPConfig.inc.php | 29 +++++++++++++++++++++----- lib/os/class.ISPConfigDebianOS.inc.php | 11 ++-------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/lib/class.ISPConfig.inc.php b/lib/class.ISPConfig.inc.php index b3a0bff..a483679 100644 --- a/lib/class.ISPConfig.inc.php +++ b/lib/class.ISPConfig.inc.php @@ -174,10 +174,29 @@ class ISPConfig { } public static function wantsPHP() { + $available_php_versions = array( + '5.6', + '7.0', + '7.1', + '7.2', + '7.3', + '7.4', + '8.0' + ); if(isset($_GET['use-php']) && $_GET['use-php']) { - return $_GET['use-php']; + if ($_GET['use-php'] === 'system') { + return $_GET['use-php']; + } else { + $use_php = explode(',',$_GET['use-php']); + $php_versions = array_intersect($use_php, $available_php_versions); + if(!empty($php_versions)) { + return $php_versions; + } else { + return false; + } + } } else { - return false; + return $available_php_versions; } } @@ -224,9 +243,9 @@ Possible arguments are: --use-nginx ->Use nginx webserver instead of apache2 --use-amavis ->Use amavis instead of rspamd for mail filtering --use-unbound ->Use unbound instead of bind9 for local resolving. Only allowed if --no-dns is set. - --use-php ->Use specific PHP version instead of installing multiple PHP, e.g. --use-php=7.3 (5.6, 7.0, 7.1, 7.2 and 7.3 available). + --use-php ->Use specific PHP versions, comma separated, instead of installing multiple PHP, e.g. --use-php=7.4,8.0 (5.6, 7.0, 7.1, 7.2, 7.3, 7.4 and 8.0 available). ->--use-php=system disables the sury repository and just installs the system\'s default PHP version. - ->CURRENTLY ONLY EITHER --use-php=system OR OMITTING THE ARGUMENT (use all versions) IS SUPPORTED! + ->ommiting the argument (use all versions) --use-ftp-ports ->This option sets the passive port range for pure-ftpd. You have to specify the port range separated by hyphen, e. g. --use-ftp-ports=40110-40210. ->If not provided the passive port range will not be configured. --no-web ->Do not use ISPConfig on this server to manage webserver setting and don\'t install nginx/apache or pureftpd. This will also prevent installing an ISPConfig UI and implies --no-roundcube as well as --no-pma @@ -279,7 +298,7 @@ Possible arguments are: } elseif(isset($_GET['lang']) && !in_array($_GET['lang'], array('de', 'en'), true)) { self::printHelp(); exit; - } elseif(isset($_GET['use-php']) && $_GET['use-php'] !== 'system') {//!in_array($_GET['use-php'], array('5.6', '7.0', '7.1', '7.2', '7.3', 'system'), true)) { + } elseif(isset($_GET['use-php']) && !self::wantsPHP()) { self::printHelp(); exit; } elseif(isset($_GET['use-ftp-ports']) && (!preg_match('/^([1-9][0-9]+)-([1-9][0-9]+)$/', $_GET['use-ftp-ports'], $pmatch) || intval($pmatch[1]) >= intval($pmatch[2]))) { diff --git a/lib/os/class.ISPConfigDebianOS.inc.php b/lib/os/class.ISPConfigDebianOS.inc.php index e5c8a5a..b8ce7fc 100644 --- a/lib/os/class.ISPConfigDebianOS.inc.php +++ b/lib/os/class.ISPConfigDebianOS.inc.php @@ -799,15 +799,8 @@ mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"'; if(ISPConfig::wantsPHP() === 'system') { $php_versions = array($this->getSystemPHPVersion()); } else { - $php_versions = array( - '5.6', - '7.0', - '7.1', - '7.2', - '7.3', - '7.4', - '8.0' - ); + //ISPConfig::run() validations prevent sending here null values + $php_versions = ISPConfig::wantsPHP(); } $php_modules = array( -- GitLab