mirror of
https://github.com/nextcloud/server.git
synced 2026-06-09 00:32:29 -04:00
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>
This commit is contained in:
parent
7b60b989b0
commit
62192ca57a
1 changed files with 12 additions and 5 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue