Fix database connection with sockets
- Reformat Database\Database.php file - Reformat and fix spelling in static/defaults.config.php file
This commit is contained in:
parent
5a2a8db21f
commit
2a4985cd46
2 changed files with 88 additions and 83 deletions
|
@ -112,23 +112,22 @@ class Database
|
||||||
$port = 0;
|
$port = 0;
|
||||||
$serveraddr = trim($this->configCache->get('database', 'hostname'));
|
$serveraddr = trim($this->configCache->get('database', 'hostname'));
|
||||||
$serverdata = explode(':', $serveraddr);
|
$serverdata = explode(':', $serveraddr);
|
||||||
$server = $serverdata[0];
|
$host = trim($serverdata[0]);
|
||||||
if (count($serverdata) > 1) {
|
if (count($serverdata) > 1) {
|
||||||
$port = trim($serverdata[1]);
|
$port = trim($serverdata[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty(trim($this->configCache->get('database', 'port')))) {
|
if (trim($this->configCache->get('database', 'port') ?? 0)) {
|
||||||
$port = trim($this->configCache->get('database', 'port'));
|
$port = trim($this->configCache->get('database', 'port') ?? 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
$server = trim($server);
|
|
||||||
$user = trim($this->configCache->get('database', 'username'));
|
$user = trim($this->configCache->get('database', 'username'));
|
||||||
$pass = trim($this->configCache->get('database', 'password'));
|
$pass = trim($this->configCache->get('database', 'password'));
|
||||||
$db = trim($this->configCache->get('database', 'database'));
|
$database = trim($this->configCache->get('database', 'database'));
|
||||||
$charset = trim($this->configCache->get('database', 'charset'));
|
$charset = trim($this->configCache->get('database', 'charset'));
|
||||||
$socket = trim($this->configCache->get('database', 'socket'));
|
$socket = trim($this->configCache->get('database', 'socket'));
|
||||||
|
|
||||||
if (!(strlen($server) && strlen($user))) {
|
if (!$host && !$socket || !$user) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,19 +137,20 @@ class Database
|
||||||
|
|
||||||
if (!$this->configCache->get('database', 'disable_pdo') && class_exists('\PDO') && in_array('mysql', PDO::getAvailableDrivers())) {
|
if (!$this->configCache->get('database', 'disable_pdo') && class_exists('\PDO') && in_array('mysql', PDO::getAvailableDrivers())) {
|
||||||
$this->driver = self::PDO;
|
$this->driver = self::PDO;
|
||||||
$connect = "mysql:host=" . $server . ";dbname=" . $db;
|
if ($socket) {
|
||||||
|
$connect = 'mysql:unix_socket=' . $socket;
|
||||||
|
} else {
|
||||||
|
$connect = 'mysql:host=' . $host;
|
||||||
if ($port > 0) {
|
if ($port > 0) {
|
||||||
$connect .= ";port=" . $port;
|
$connect .= ';port=' . $port;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($charset) {
|
if ($charset) {
|
||||||
$connect .= ";charset=" . $charset;
|
$connect .= ';charset=' . $charset;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($socket) {
|
$connect .= ';dbname=' . $database;
|
||||||
$connect .= ";$unix_socket=" . $socket;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->connection = @new PDO($connect, $user, $pass, [PDO::ATTR_PERSISTENT => $persistent]);
|
$this->connection = @new PDO($connect, $user, $pass, [PDO::ATTR_PERSISTENT => $persistent]);
|
||||||
|
@ -165,10 +165,12 @@ class Database
|
||||||
if (!$this->connected && class_exists('\mysqli')) {
|
if (!$this->connected && class_exists('\mysqli')) {
|
||||||
$this->driver = self::MYSQLI;
|
$this->driver = self::MYSQLI;
|
||||||
|
|
||||||
if ($port > 0) {
|
if ($socket) {
|
||||||
$this->connection = @new mysqli($server, $user, $pass, $db, $port);
|
$this->connection = @new mysqli(null, $user, $pass, $database, null, $socket);
|
||||||
|
} elseif ($port > 0) {
|
||||||
|
$this->connection = @new mysqli($host, $user, $pass, $database, $port);
|
||||||
} else {
|
} else {
|
||||||
$this->connection = @new mysqli($server, $user, $pass, $db);
|
$this->connection = @new mysqli($host, $user, $pass, $database);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mysqli_connect_errno()) {
|
if (!mysqli_connect_errno()) {
|
||||||
|
@ -177,11 +179,6 @@ class Database
|
||||||
if ($charset) {
|
if ($charset) {
|
||||||
$this->connection->set_charset($charset);
|
$this->connection->set_charset($charset);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($socket) {
|
|
||||||
$this->connection->set_socket($socket);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,6 +195,7 @@ class Database
|
||||||
{
|
{
|
||||||
$this->testmode = $test;
|
$this->testmode = $test;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the logger for DBA
|
* Sets the logger for DBA
|
||||||
*
|
*
|
||||||
|
@ -222,6 +220,7 @@ class Database
|
||||||
{
|
{
|
||||||
$this->profiler = $profiler;
|
$this->profiler = $profiler;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Disconnects the current database connection
|
* Disconnects the current database connection
|
||||||
*/
|
*/
|
||||||
|
@ -358,11 +357,15 @@ class Database
|
||||||
|
|
||||||
if ($log) {
|
if ($log) {
|
||||||
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
||||||
@file_put_contents($this->configCache->get('system', 'db_log_index'), DateTimeFormat::utcNow() . "\t" .
|
@file_put_contents(
|
||||||
|
$this->configCache->get('system', 'db_log_index'),
|
||||||
|
DateTimeFormat::utcNow() . "\t" .
|
||||||
$row['key'] . "\t" . $row['rows'] . "\t" . $row['Extra'] . "\t" .
|
$row['key'] . "\t" . $row['rows'] . "\t" . $row['Extra'] . "\t" .
|
||||||
basename($backtrace[1]["file"]) . "\t" .
|
basename($backtrace[1]["file"]) . "\t" .
|
||||||
$backtrace[1]["line"] . "\t" . $backtrace[2]["function"] . "\t" .
|
$backtrace[1]["line"] . "\t" . $backtrace[2]["function"] . "\t" .
|
||||||
substr($query, 0, 4000) . "\n", FILE_APPEND);
|
substr($query, 0, 4000) . "\n",
|
||||||
|
FILE_APPEND
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -743,10 +746,14 @@ class Database
|
||||||
$duration = round($duration, 3);
|
$duration = round($duration, 3);
|
||||||
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
||||||
|
|
||||||
@file_put_contents($this->configCache->get('system', 'db_log'), DateTimeFormat::utcNow() . "\t" . $duration . "\t" .
|
@file_put_contents(
|
||||||
|
$this->configCache->get('system', 'db_log'),
|
||||||
|
DateTimeFormat::utcNow() . "\t" . $duration . "\t" .
|
||||||
basename($backtrace[1]["file"]) . "\t" .
|
basename($backtrace[1]["file"]) . "\t" .
|
||||||
$backtrace[1]["line"] . "\t" . $backtrace[2]["function"] . "\t" .
|
$backtrace[1]["line"] . "\t" . $backtrace[2]["function"] . "\t" .
|
||||||
substr($this->replaceParameters($sql, $args), 0, 4000) . "\n", FILE_APPEND);
|
substr($this->replaceParameters($sql, $args), 0, 4000) . "\n",
|
||||||
|
FILE_APPEND
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $retval;
|
return $retval;
|
||||||
|
@ -1438,8 +1445,7 @@ class Database
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
array_walk($fields, function(&$value, $key) use ($options)
|
array_walk($fields, function (&$value, $key) use ($options) {
|
||||||
{
|
|
||||||
$field = $value;
|
$field = $value;
|
||||||
$value = DBA::quoteIdentifier($field);
|
$value = DBA::quoteIdentifier($field);
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@ return [
|
||||||
'pdo_emulate_prepares' => true,
|
'pdo_emulate_prepares' => true,
|
||||||
|
|
||||||
// disable_pdo (Boolean)
|
// disable_pdo (Boolean)
|
||||||
// PDO is used by default (if available). Otherwise MySQLi will be used.
|
// PDO is used by default (if available). Otherwise, MySQLi will be used.
|
||||||
'disable_pdo' => false,
|
'disable_pdo' => false,
|
||||||
|
|
||||||
// persistent (Boolean)
|
// persistent (Boolean)
|
||||||
|
@ -153,7 +153,7 @@ return [
|
||||||
'community_no_sharer' => false,
|
'community_no_sharer' => false,
|
||||||
|
|
||||||
// contact_update_limit (Integer)
|
// contact_update_limit (Integer)
|
||||||
// How much contacts should be checked at a time?
|
// How many contacts should be checked at a time?
|
||||||
'contact_update_limit' => 100,
|
'contact_update_limit' => 100,
|
||||||
|
|
||||||
// cron_interval (Integer)
|
// cron_interval (Integer)
|
||||||
|
@ -259,7 +259,7 @@ return [
|
||||||
'disable_implicit_mentions' => false,
|
'disable_implicit_mentions' => false,
|
||||||
|
|
||||||
// disable_url_validation (Boolean)
|
// disable_url_validation (Boolean)
|
||||||
// Disables the DNS lookup of an URL.
|
// Disables the DNS lookup of a URL.
|
||||||
'disable_url_validation' => false,
|
'disable_url_validation' => false,
|
||||||
|
|
||||||
// disable_password_exposed (Boolean)
|
// disable_password_exposed (Boolean)
|
||||||
|
@ -300,11 +300,11 @@ return [
|
||||||
|
|
||||||
// groupedit_image_limit (Integer)
|
// groupedit_image_limit (Integer)
|
||||||
// Number of contacts at which the group editor should switch from display the profile pictures of the contacts to only display the names.
|
// Number of contacts at which the group editor should switch from display the profile pictures of the contacts to only display the names.
|
||||||
// This can alternatively be set on a per account basis in the pconfig table.
|
// This can alternatively be set on a per-account basis in the pconfig table.
|
||||||
'groupedit_image_limit' => 400,
|
'groupedit_image_limit' => 400,
|
||||||
|
|
||||||
// gserver_update_limit (Integer)
|
// gserver_update_limit (Integer)
|
||||||
// How much servers should be checked at a time?
|
// How many servers should be checked at a time?
|
||||||
'gserver_update_limit' => 100,
|
'gserver_update_limit' => 100,
|
||||||
|
|
||||||
// hsts (Boolean)
|
// hsts (Boolean)
|
||||||
|
@ -330,7 +330,7 @@ return [
|
||||||
'ipv4_resolve' => false,
|
'ipv4_resolve' => false,
|
||||||
|
|
||||||
// invitation_only (Boolean)
|
// invitation_only (Boolean)
|
||||||
// If set true registration is only possible after a current member of the node has send an invitation.
|
// If set true registration is only possible after a current member of the node has sent an invitation.
|
||||||
'invitation_only' => false,
|
'invitation_only' => false,
|
||||||
|
|
||||||
// itemspage_network (Integer)
|
// itemspage_network (Integer)
|
||||||
|
@ -483,7 +483,7 @@ return [
|
||||||
'paranoia' => false,
|
'paranoia' => false,
|
||||||
|
|
||||||
// permit_crawling (Boolean)
|
// permit_crawling (Boolean)
|
||||||
// Restricts the search for not logged in users to one search per minute.
|
// Restricts the search for not logged-in users to one search per minute.
|
||||||
'permit_crawling' => false,
|
'permit_crawling' => false,
|
||||||
|
|
||||||
// pidfile (Path)
|
// pidfile (Path)
|
||||||
|
@ -491,7 +491,7 @@ return [
|
||||||
'pidfile' => '',
|
'pidfile' => '',
|
||||||
|
|
||||||
// png_quality (Integer)
|
// png_quality (Integer)
|
||||||
// Sets the ImageMagick compression level for PNG images. Values ranges from 0 (uncompressed) to 9 (most compressed).
|
// Sets the ImageMagick compression level for PNG images. Values range from 0 (uncompressed) to 9 (most compressed).
|
||||||
'png_quality' => 8,
|
'png_quality' => 8,
|
||||||
|
|
||||||
// profiler (Boolean)
|
// profiler (Boolean)
|
||||||
|
@ -568,11 +568,11 @@ return [
|
||||||
'set_creation_date' => false,
|
'set_creation_date' => false,
|
||||||
|
|
||||||
// show_global_community_hint (Boolean)
|
// show_global_community_hint (Boolean)
|
||||||
// When the global community page is enabled, use this option to display a hint above the stream, that this is a collection of all public top-level postings that arrive on your node.
|
// When the global community page is enabled, use this option to display a hint above the stream, that this is a collection of all public top-level postings that arrive at your node.
|
||||||
'show_global_community_hint' => false,
|
'show_global_community_hint' => false,
|
||||||
|
|
||||||
// show_received (Boolean)
|
// show_received (Boolean)
|
||||||
// Show the receive data along with the post creation date
|
// Show the received date along with the post creation date
|
||||||
'show_received' => true,
|
'show_received' => true,
|
||||||
|
|
||||||
// show_received_seconds (Integer)
|
// show_received_seconds (Integer)
|
||||||
|
@ -609,13 +609,13 @@ return [
|
||||||
|
|
||||||
// username_min_length (Integer)
|
// username_min_length (Integer)
|
||||||
// The minimum character length a username can be.
|
// The minimum character length a username can be.
|
||||||
// This length is check once the username has been trimmed and multiple spaces have been collapsed into one.
|
// This length is checked once the username has been trimmed and multiple spaces have been collapsed into one.
|
||||||
// Minimum for this config value is 1. Maximum is 64 as the resulting profile URL mustn't be longer than 255 chars.
|
// Minimum for this config value is 1. Maximum is 64 as the resulting profile URL mustn't be longer than 255 chars.
|
||||||
'username_min_length' => 3,
|
'username_min_length' => 3,
|
||||||
|
|
||||||
// username_max_length (Integer)
|
// username_max_length (Integer)
|
||||||
// The maximum character length a username can be.
|
// The maximum character length a username can be.
|
||||||
// This length is check once the username has been trimmed and multiple spaces have been collapsed into one.
|
// This length is checked once the username has been trimmed and multiple spaces have been collapsed into one.
|
||||||
// Minimum for this config value is 1. Maximum is 64 as the resulting profile URL mustn't be longer than 255 chars.
|
// Minimum for this config value is 1. Maximum is 64 as the resulting profile URL mustn't be longer than 255 chars.
|
||||||
'username_max_length' => 48,
|
'username_max_length' => 48,
|
||||||
|
|
||||||
|
@ -739,7 +739,6 @@ return [
|
||||||
|
|
||||||
// use_sub_dirs (Boolean)
|
// use_sub_dirs (Boolean)
|
||||||
// By default the template cache is stored in several subdirectories.
|
// By default the template cache is stored in several subdirectories.
|
||||||
//
|
|
||||||
'use_sub_dirs' => true,
|
'use_sub_dirs' => true,
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
Loading…
Reference in a new issue