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