diff --git a/lib/dml/mysqli_native_moodle_database.php b/lib/dml/mysqli_native_moodle_database.php index d4cb065b9a3..b22ca0943d4 100644 --- a/lib/dml/mysqli_native_moodle_database.php +++ b/lib/dml/mysqli_native_moodle_database.php @@ -264,15 +264,21 @@ class mysqli_native_moodle_database extends moodle_database { } $this->store_settings($dbhost, $dbuser, $dbpass, $dbname, $prefix, $dboptions); - unset($this->dboptions['dbsocket']); + // dbsocket is used ONLY if host is NULL or 'localhost', + // you can not disable it because it is always tried if dbhost is 'localhost' + if (!empty($this->dboptions['dbsocket']) and strpos($this->dboptions['dbsocket'], '/') !== false) { + $dbsocket = $this->dboptions['dbsocket']; + } else { + $dbsocket = ini_get('mysqli.default_socket'); + } if (empty($this->dboptions['dbport'])) { $dbport = ini_get('mysqli.default_port'); } else { $dbport = (int)$this->dboptions['dbport']; } ob_start(); - $this->mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname, $dbport); + $this->mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname, $dbport, $dbsocket); $dberr = ob_get_contents(); ob_end_clean(); $errorno = @$this->mysqli->connect_errno;