Fix loading empty node.config.php

This commit is contained in:
Philipp Holzer 2023-01-08 02:04:25 +01:00
parent 91bd03a75f
commit 0429a4e429
Signed by: nupplaPhil
GPG Key ID: 24A7501396EB5432
2 changed files with 28 additions and 2 deletions

View File

@ -177,7 +177,7 @@ class ConfigFileManager
{
$filename = $this->configDir . '/' . self::CONFIG_DATA_FILE;
if (file_exists($filename)) {
if (file_exists($filename) && (filesize($filename) > 0)) {
// The fallback empty return content
$content = '<?php return [];';
@ -188,9 +188,16 @@ class ConfigFileManager
*
* Any exclusive locking (LOCK_EX) would need to wait until all LOCK_SHs are unlocked
*/
$configStream = fopen($filename, 'r');
if (($configStream = @fopen($filename, 'r')) === false) {
throw new ConfigFileException(sprintf('Cannot open file "%s" in mode r', $filename));
}
try {
if (flock($configStream, LOCK_SH)) {
if (($filesize = filesize($filename)) === 0) {
return;
}
$content = fread($configStream, filesize($filename));
if (!$content) {
throw new ConfigFileException(sprintf('Couldn\'t read file %s', $filename));

View File

@ -511,4 +511,23 @@ class ConfigFileManagerTest extends MockedTest
self::assertNull($configCache->get('system', 'default_timezone'));
}
/**
* Test for empty node.config.php
*/
public function testEmptyFile()
{
$this->delConfigFile('node.config.php');
vfsStream::newFile('node.config.php')
->at($this->root->getChild('config'))
->setContent('');
$configFileManager = (new Config())->createConfigFileManager($this->root->url());
$configCache = new Cache();
$configFileManager->setupCache($configCache);
self::assertEquals(1,1);
}
}