Support for mysql unix socket
This will add support for connecting with a unix socket path to the mysql database. Users will need to set their `PSM_DB_HOST` the unix socket path starting with an ":" symbol, like so `:/home/xxxxxx/var/run/mysql.sock` I stole this way idea of using the database host to store the unix socket path from Nextcloud. They do the same. Related: https://github.com/phpservermon/phpservermon/issues/1118pull/1119/head
parent
de7c62cbce
commit
617adeea6f
|
@ -533,16 +533,29 @@ class Database
|
||||||
*/
|
*/
|
||||||
protected function connect()
|
protected function connect()
|
||||||
{
|
{
|
||||||
|
$isHostUnixSocket = strpos($this->db_host, ':') === 0;
|
||||||
|
|
||||||
// Initizale connection
|
// Initizale connection
|
||||||
try {
|
try {
|
||||||
$this->pdo = new \PDO(
|
if ($isHostUnixSocket) {
|
||||||
'mysql:host=' . $this->db_host .
|
$this->pdo = new \PDO(
|
||||||
';port=' . $this->db_port .
|
'mysql:unix_socket=' . ltrim($this->db_host, ':') .
|
||||||
';dbname=' . $this->db_name .
|
';dbname=' . $this->db_name .
|
||||||
';charset=utf8',
|
';charset=utf8',
|
||||||
$this->db_user,
|
$this->db_user,
|
||||||
$this->db_pass
|
$this->db_pass
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
$this->pdo = new \PDO(
|
||||||
|
'mysql:host=' . $this->db_host .
|
||||||
|
';port=' . $this->db_port .
|
||||||
|
';dbname=' . $this->db_name .
|
||||||
|
';charset=utf8',
|
||||||
|
$this->db_user,
|
||||||
|
$this->db_pass
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
$this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
|
$this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
|
||||||
$this->status = true;
|
$this->status = true;
|
||||||
} catch (\PDOException $e) {
|
} catch (\PDOException $e) {
|
||||||
|
|
Loading…
Reference in New Issue