mirror of https://github.com/nextcloud/server
Merge pull request #44230 from nextcloud/varun/config-read
config: fix correctness issues in reading
This commit is contained in:
commit
024f689c97
|
@ -215,13 +215,24 @@ class Config {
|
|||
|
||||
// Include file and merge config
|
||||
foreach ($configFiles as $file) {
|
||||
$fileExistsAndIsReadable = file_exists($file) && is_readable($file);
|
||||
$filePointer = $fileExistsAndIsReadable ? fopen($file, 'r') : false;
|
||||
if ($file === $this->configFilePath &&
|
||||
$filePointer === false) {
|
||||
// Opening the main config might not be possible, e.g. if the wrong
|
||||
// permissions are set (likely on a new installation)
|
||||
continue;
|
||||
unset($CONFIG);
|
||||
|
||||
// Invalidate opcache (only if the timestamp changed)
|
||||
if (function_exists('opcache_invalidate')) {
|
||||
opcache_invalidate($file, false);
|
||||
}
|
||||
|
||||
$filePointer = @fopen($file, 'r');
|
||||
if ($filePointer === false) {
|
||||
// e.g. wrong permissions are set
|
||||
if ($file === $this->configFilePath) {
|
||||
// opening the main config file might not be possible
|
||||
// (likely on a new installation)
|
||||
continue;
|
||||
}
|
||||
|
||||
http_response_code(500);
|
||||
die(sprintf('FATAL: Could not open the config file %s', $file));
|
||||
}
|
||||
|
||||
// Try to acquire a file lock
|
||||
|
@ -229,8 +240,14 @@ class Config {
|
|||
throw new \Exception(sprintf('Could not acquire a shared lock on the config file %s', $file));
|
||||
}
|
||||
|
||||
unset($CONFIG);
|
||||
include $file;
|
||||
try {
|
||||
include $file;
|
||||
} finally {
|
||||
// Close the file pointer and release the lock
|
||||
flock($filePointer, LOCK_UN);
|
||||
fclose($filePointer);
|
||||
}
|
||||
|
||||
if (!defined('PHPUNIT_RUN') && headers_sent()) {
|
||||
// syntax issues in the config file like leading spaces causing PHP to send output
|
||||
$errorMessage = sprintf('Config file has leading content, please remove everything before "<?php" in %s', basename($file));
|
||||
|
@ -242,10 +259,6 @@ class Config {
|
|||
if (isset($CONFIG) && is_array($CONFIG)) {
|
||||
$this->cache = array_merge($this->cache, $CONFIG);
|
||||
}
|
||||
|
||||
// Close the file pointer and release the lock
|
||||
flock($filePointer, LOCK_UN);
|
||||
fclose($filePointer);
|
||||
}
|
||||
|
||||
$this->envCache = getenv();
|
||||
|
|
Loading…
Reference in New Issue