diff --git a/.lando.yml b/.lando.yml index e3356d67e..ec9d9ffb4 100644 --- a/.lando.yml +++ b/.lando.yml @@ -4,6 +4,10 @@ config: webroot: . php: 8.2 services: + redisservice: + type: redis + persist: true + portforward: true mailservice: type: mailhog portforward: true diff --git a/src/Web/Session.php b/src/Web/Session.php index 7f4db04ed..52be8d318 100644 --- a/src/Web/Session.php +++ b/src/Web/Session.php @@ -31,7 +31,9 @@ class Session ini_set('session.use_only_cookies', 1); ini_set('session.cookie_httponly', 1); - $this->custom_handler = boolval(get_config('system', 'session_custom', false)); + $this->custom_handler = get_config('system', 'session_custom', false); + $session_save_handler = get_config('system', 'session_save_handler', null); + $session_save_path = get_config('system', 'session_save_path', null); /* * Set our session storage functions. @@ -40,8 +42,6 @@ class Session if ($this->custom_handler) { /* Custom handler (files, memached, redis..) */ - $session_save_handler = strval(get_config('system', 'session_save_handler', null)); - $session_save_path = strval(get_config('system', 'session_save_path', null)); if ($session_save_handler && $session_save_path) { ini_set('session.save_handler', $session_save_handler); ini_set('session.save_path', $session_save_path); @@ -49,8 +49,12 @@ class Session logger('Session save handler or path not set.', LOGGER_NORMAL, LOG_ERR); } } else { - $handler = new SessionHandler(); - + if (!empty($session_save_handler) && $session_save_handler === 'Redis' + && $session_save_path) { + $handler = new SessionRedis($session_save_path); + } else { + $handler = new SessionHandler(); + } $this->handler = $handler; $x = session_set_save_handler($handler, false); diff --git a/src/Web/SessionRedis.php b/src/Web/SessionRedis.php index 7aa91380a..e2c206212 100644 --- a/src/Web/SessionRedis.php +++ b/src/Web/SessionRedis.php @@ -19,6 +19,7 @@ class SessionRedis implements SessionHandlerInterface { try { if (isset($credentials['path'])) { $this->redis->connect($credentials['path']); + logger('redis connected - path'); } else { if (isset($credentials['query'])) { @@ -28,13 +29,14 @@ class SessionRedis implements SessionHandlerInterface { $vars = []; } $this->redis->connect( - (isset($credentials['scheme']) ? $credentials['scheme'] . '://' : '') . $credentials['host'], + ($credentials['host']), (isset($credentials['port']) ? $credentials['port'] : 6379), (isset($vars['timeout']) ? $vars['timeout'] : 1), null, 0, (isset($vars['read_timeout']) ? $vars['read_timeout'] : 0) ); + logger('redis connected'); if (isset($vars['auth'])) { $this->redis->auth($vars['auth']);