From ff5fe5dbaac63c56b7f2b1e39e5fefc9a6064ac4 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Tue, 14 Jul 2020 17:00:03 +0200
Subject: [PATCH] Fixed PHP 7.4 compatibility problem with limit query in mysql
 database lib.

---
 install/lib/mysql.lib.php              | 13 +++++++++----
 interface/lib/classes/db_mysql.inc.php | 13 +++++++++----
 interface/lib/classes/getconf.inc.php  |  2 +-
 server/lib/classes/db_mysql.inc.php    | 14 ++++++++++----
 4 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/install/lib/mysql.lib.php b/install/lib/mysql.lib.php
index 3e091d10b8..c24a454d04 100644
--- a/install/lib/mysql.lib.php
+++ b/install/lib/mysql.lib.php
@@ -286,10 +286,15 @@ class db
 	public function queryOneRecord($sQuery = '') {
 		
 		$aArgs = func_get_args();
-		
-		if(!preg_match('/limit \d+\s*,\s*\d+$/i', $sQuery)) $sQuery .= ' LIMIT 0,1';
-		
-		$oResult = call_user_func_array(array(&$this, 'query'), $aArgs);
+		if(!empty($aArgs)) {
+			$sQuery = array_shift($aArgs);
+			if($sQuery && !preg_match('/limit \d+(\s*,\s*\d+)?$/i', $sQuery)) {
+				$sQuery .= ' LIMIT 0,1';
+		}
+		array_unshift($aArgs, $sQuery);
+		}
+  
+		$oResult = call_user_func_array([&$this, 'query'], $aArgs);
 		if(!$oResult) return null;
 
 		$aReturn = $oResult->get();
diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php
index 5348e41708..014feec8c3 100644
--- a/interface/lib/classes/db_mysql.inc.php
+++ b/interface/lib/classes/db_mysql.inc.php
@@ -356,10 +356,15 @@ class db
 	public function queryOneRecord($sQuery = '') {
 		
 		$aArgs = func_get_args();
-		
-		if(!preg_match('/limit \d+\s*(,\s*\d+)?$/i', $sQuery)) $sQuery .= ' LIMIT 0,1';
-
-		$oResult = call_user_func_array(array(&$this, 'query'), $aArgs);
+		if(!empty($aArgs)) {
+			$sQuery = array_shift($aArgs);
+			if($sQuery && !preg_match('/limit \d+(\s*,\s*\d+)?$/i', $sQuery)) {
+				$sQuery .= ' LIMIT 0,1';
+		}
+		array_unshift($aArgs, $sQuery);
+		}
+  
+		$oResult = call_user_func_array([&$this, 'query'], $aArgs);
 		if(!$oResult) return null;
 
 		$aReturn = $oResult->get();
diff --git a/interface/lib/classes/getconf.inc.php b/interface/lib/classes/getconf.inc.php
index ef9e0702d2..bbb57d6014 100644
--- a/interface/lib/classes/getconf.inc.php
+++ b/interface/lib/classes/getconf.inc.php
@@ -65,7 +65,7 @@ class getconf {
 		} else {
 			$app->uses('ini_parser');
 			$security_config_path = '/usr/local/ispconfig/security/security_settings.ini';
-			if(!is_file($security_config_path)) $security_config_path = realpath(ISPC_ROOT_PATH.'/../security/security_settings.ini');
+			if(!is_readable($security_config_path)) $security_config_path = realpath(ISPC_ROOT_PATH.'/../security/security_settings.ini');
 			$this->security_config = $app->ini_parser->parse_ini_string(file_get_contents($security_config_path));
 
 			return ($section == '') ? $this->security_config : $this->security_config[$section];
diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php
index 2bccf1ecb7..8c38123096 100644
--- a/server/lib/classes/db_mysql.inc.php
+++ b/server/lib/classes/db_mysql.inc.php
@@ -354,11 +354,17 @@ class db
 	 * @return array result row or NULL if none found
 	 */
 	public function queryOneRecord($sQuery = '') {
-
+		
 		$aArgs = func_get_args();
-		if(!preg_match('/limit \d+\s*(,\s*\d+)?$/i', $sQuery)) $sQuery .= ' LIMIT 0,1';
-
-		$oResult = call_user_func_array(array(&$this, 'query'), $aArgs);
+		if(!empty($aArgs)) {
+			$sQuery = array_shift($aArgs);
+			if($sQuery && !preg_match('/limit \d+(\s*,\s*\d+)?$/i', $sQuery)) {
+				$sQuery .= ' LIMIT 0,1';
+		}
+		array_unshift($aArgs, $sQuery);
+		}
+  
+		$oResult = call_user_func_array([&$this, 'query'], $aArgs);
 		if(!$oResult) return null;
 
 		$aReturn = $oResult->get();
-- 
GitLab