diff --git a/install/install.php b/install/install.php index 64d05feecd8093a7df9b42af4ab563b96cfce7b8..114410b53c1b292053478155354411099207339d 100644 --- a/install/install.php +++ b/install/install.php @@ -252,6 +252,9 @@ unset($tmp); include_once 'lib/mysql.lib.php'; $inst->db = new db(); +//* Check MySQL version +$inst->check_mysql_version(); + //** Begin with standard or expert installation $conf['services']['mail'] = false; diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index fb84be14ff822a405dd38987ad42460c607dbe26..b42aa6b78a22c61a87f5a933544482568a8df2f1 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -262,6 +262,36 @@ class installer_base { if($msg != '') die($msg); } + //** Check MySQL version + public function check_mysql_version() { + global $conf; + + $min_mariadb_version = '10.0.5'; + // Set MySQL version to 8.0.4 after CentOS 7 support ended to allow preg_* functions in SQL queries + $min_mysql_version = '5.5'; + + $rec = $this->db->queryOneRecord('SELECT VERSION() as mysql_version'); + if(is_array($rec)) { + $version = $rec['mysql_version']; + } else { + die("Unable to get MySQL version\n"); + } + + if(strpos($version,'MariaDB')) { + // We have MariaDB + $parts = explode('-',$version); + $version = $parts[0]; + swriteln("MariaDB version ".$version); + if(version_compare($version, $min_mariadb_version, '<')) die("Minimum required MariaDB version is ".$min_mariadb_version."\n"); + } else { + // we have MySQL + swriteln("MySQL version ".$version); + if(version_compare($version, $min_mysql_version, '<')) die("Minimum required MySQL version is ".$min_mysql_version."\n"); + } + + + } + public function force_configure_app($service, $enable_force=true) { $force = false; if(AUTOINSTALL == true) return false; diff --git a/install/update.php b/install/update.php index 6047b7b9302f9841b181c6b7b5c2ec5f71153866..e03b5d9de10c740478a81b7c12fe2b9af126ffb0 100644 --- a/install/update.php +++ b/install/update.php @@ -274,6 +274,9 @@ $inst->db = new db(); $inst->db->setDBData($conf['mysql']["host"], $conf['mysql']["ispconfig_user"], $conf['mysql']["ispconfig_password"], $conf['mysql']["port"]); $inst->db->setDBName($conf['mysql']['database']); +//* Check MySQL version +$inst->check_mysql_version(); + //* initialize the master DB, if we have a multiserver setup if($conf['mysql']['master_slave_setup'] == 'y') {