diff options
author | Josh Richards <josh.t.richards@gmail.com> | 2024-06-26 09:31:44 -0400 |
---|---|---|
committer | Josh <josh.t.richards@gmail.com> | 2024-07-08 16:41:58 -0400 |
commit | 62192ca57a01a11a12f7bc46140c455ab9742166 (patch) | |
tree | 1628a8cbb20ffc4b8409079aa35b7846f3077a87 /lib/private | |
parent | 7b60b989b0382134232d8c223dfece8410267a37 (diff) | |
download | nextcloud-server-62192ca57a01a11a12f7bc46140c455ab9742166.tar.gz nextcloud-server-62192ca57a01a11a12f7bc46140c455ab9742166.zip |
fix(config): Add missing handling for envCache in getKeys()
NC_ env variable overrides were not appearing in
the output of `occ config:list system` nor `occ
config:system:get xxx`. This was creating nearly
impossible to diagnose configuration/ behavior
disprepancies.
- Refactored readData() so that we aren't saving
the entire environment in the envCache anymore
(only those prefixed "NC_") and so that we save
NC_ provided config values under their real
key.
- Refactored getValue() to accommodate readData()
refactor
- Fixed getKeys() to properly return
envCache keys too
Environment provided config variables now appear
in `occ config:list system` as expected.
Environment provided config variables now appear
when queried via `occ config:system:get KEY`
envCache is now free of non-NC stuff.
Signed-off-by: Josh Richards <josh.t.richards@gmail.com>
Diffstat (limited to 'lib/private')
-rw-r--r-- | lib/private/Config.php | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/private/Config.php b/lib/private/Config.php index ee30b8efc5e..7ff7312ddea 100644 --- a/lib/private/Config.php +++ b/lib/private/Config.php @@ -49,7 +49,7 @@ class Config { * @return array an array of key names */ public function getKeys() { - return array_keys($this->cache); + return array_merge(array_keys($this->cache), array_keys($this->envCache)); } /** @@ -64,9 +64,8 @@ class Config { * @return mixed the value or $default */ public function getValue($key, $default = null) { - $envKey = self::ENV_PREFIX . $key; - if (isset($this->envCache[$envKey])) { - return $this->envCache[$envKey]; + if (isset($this->envCache[$key])) { + return $this->envCache[$key]; } if (isset($this->cache[$key])) { @@ -226,7 +225,15 @@ class Config { } } - $this->envCache = getenv(); + // grab any "NC_" environment variables + $envRaw = getenv(); + // only save environment variables prefixed with "NC_" in the cache + foreach ($envRaw as $rawEnvKey => $rawEnvValue) { + if (str_starts_with($rawEnvKey, self::ENV_PREFIX)) { + $realKey = explode(self::ENV_PREFIX, $rawEnvKey)[1]; + $this->envCache[$realKey] = $rawEnvValue; + } + } } /** |