Likely this is a PHP8 issue that's been fixed since April.

PHP8 broke a lot of existing code (and continues to break more code with each release), and you need either stay on PHP7 or run a very recent version of Observium.

In this case PHP8 is generating an error because $config['auth_ad_groups'] is not an array. This code was legal in PHP7, but is no longer in PHP8.

adam.

Sent from Mailspring, the best free email app for work
On Oct 21 2024, at 12:50 am, dwalcott--- via observium <observium@lists.observium.org> wrote:
Hey everyone,

I had a functioning install of Observium 24.4.13528 (26th April 2024) running on Ubuntu 24.04.1 LTS, just using mysql for auth.

I then tried to switch to AD by entering info in the "AD" section of the /settings web UI config page. Once I did that, I got the error below when trying to log in.

I switched back to mysql login, by manually changing $config['auth_mechanism'] = "ad"; to $config['auth_mechanism'] = "mysql"; in config.php, and am able to log in again.

Can anyone point me in the direction of what's wrong?




array_keys(): Argument #1 ($array) must be of type array, null given in /opt/observium/html/includes/authentication/ad.inc.php:38
#0: (unknown function) called at [/opt/observium/html/includes/authentication/ad.inc.php:38]
33: }
34: }
35:
36: // If no access control groups are specified, use the defined level groups as access control
37: if (!is_array($config['auth_ad_group'])) {
38: $config['auth_ad_group'] = array_keys($config['auth_ad_groups']);
39: }
40:
41: // Synthesize Base DN from configured domain name, if it is not set
42: if (!isset($config['auth_ad_basedn'])) {
43: if (isset($config['auth_ad_domain'])) {
#1: array_keys called at [/opt/observium/html/includes/authentication/ad.inc.php:38]
33: }
34: }
35:
36: // If no access control groups are specified, use the defined level groups as access control
37: if (!is_array($config['auth_ad_group'])) {
38: $config['auth_ad_group'] = array_keys($config['auth_ad_groups']);
39: }
40:
41: // Synthesize Base DN from configured domain name, if it is not set
42: if (!isset($config['auth_ad_basedn'])) {
43: if (isset($config['auth_ad_domain'])) {
#2: include_once called at [/opt/observium/html/includes/authenticate.inc.php:126]
121: // Always load mysql as backup
122: include_once($config['html_dir'] . '/includes/authentication/mysql.inc.php');
123:
124: // Load primary module if not mysql
125: if ($config['auth_mechanism'] !== 'mysql') {
126: include_once($auth_file);
127: }
128:
129: // Include base auth functions calls
130: include_once($config['html_dir'] . '/includes/authenticate-functions.inc.php');
131: } else {
#3: include called at [/opt/observium/html/index.php:72]
67: $_SERVER['PATH_INFO'] = $_SERVER['PATH_INFO'] ?? ($_SERVER['ORIG_PATH_INFO'] ?? '');
68:
69: // Clean global $vars variable, it populated only after correct authenticating
70: unset($vars);
71:
72: include($config['html_dir'] . "/includes/authenticate.inc.php");
73:
74: // Default theme set in global or user setting
75: if ($config['web_theme_default'] === 'system' && isset($_COOKIE['screen_scheme'])) {
76: $theme = $_COOKIE['screen_scheme'];
77: } else {
_______________________________________________
observium mailing list -- observium@lists.observium.org
To unsubscribe send an email to observium-leave@lists.observium.org