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/1118
This commit is contained in:
TacticalFreak 2021-05-02 14:08:23 +02:00 committed by GitHub
parent de7c62cbce
commit 617adeea6f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 21 additions and 8 deletions

View File

@ -533,16 +533,29 @@ class Database
*/
protected function connect()
{
$isHostUnixSocket = strpos($this->db_host, ':') === 0;
// Initizale connection
try {
$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
);
if ($isHostUnixSocket) {
$this->pdo = new \PDO(
'mysql:unix_socket=' . ltrim($this->db_host, ':') .
';dbname=' . $this->db_name .
';charset=utf8',
$this->db_user,
$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->status = true;
} catch (\PDOException $e) {