Fix loading empty node.config.php
This commit is contained in:
parent
91bd03a75f
commit
0429a4e429
2 changed files with 28 additions and 2 deletions
|
@ -177,7 +177,7 @@ class ConfigFileManager
|
||||||
{
|
{
|
||||||
$filename = $this->configDir . '/' . self::CONFIG_DATA_FILE;
|
$filename = $this->configDir . '/' . self::CONFIG_DATA_FILE;
|
||||||
|
|
||||||
if (file_exists($filename)) {
|
if (file_exists($filename) && (filesize($filename) > 0)) {
|
||||||
|
|
||||||
// The fallback empty return content
|
// The fallback empty return content
|
||||||
$content = '<?php return [];';
|
$content = '<?php return [];';
|
||||||
|
@ -188,9 +188,16 @@ class ConfigFileManager
|
||||||
*
|
*
|
||||||
* Any exclusive locking (LOCK_EX) would need to wait until all LOCK_SHs are unlocked
|
* 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 {
|
try {
|
||||||
if (flock($configStream, LOCK_SH)) {
|
if (flock($configStream, LOCK_SH)) {
|
||||||
|
if (($filesize = filesize($filename)) === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$content = fread($configStream, filesize($filename));
|
$content = fread($configStream, filesize($filename));
|
||||||
if (!$content) {
|
if (!$content) {
|
||||||
throw new ConfigFileException(sprintf('Couldn\'t read file %s', $filename));
|
throw new ConfigFileException(sprintf('Couldn\'t read file %s', $filename));
|
||||||
|
|
|
@ -511,4 +511,23 @@ class ConfigFileManagerTest extends MockedTest
|
||||||
|
|
||||||
self::assertNull($configCache->get('system', 'default_timezone'));
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue