Return HTTP 500 for configuration validation problems (closes #2983)

This commit is contained in:
Bernd Bestel 2026-09-03 19:50:39 +02:00
parent e83699b346
commit 85dc601b37
No known key found for this signature in database
GPG Key ID: 71BD34C0D4891300
3 changed files with 16 additions and 14 deletions

View File

@ -46,6 +46,7 @@ try
}
catch (\Grocy\Helpers\EInvalidConfig $ex)
{
http_response_code(500);
exit('Invalid setting in config.php: ' . $ex->getMessage());
}

View File

@ -19,15 +19,15 @@ class PrerequisiteChecker
{
public function checkRequirements()
{
self::checkForPhpVersion();
self::checkForConfigFile();
self::checkForConfigDistFile();
self::checkForComposer();
self::checkForPhpExtensions();
self::checkForSqliteVersion();
self::CheckPhpVersion();
self::CheckConfigFile();
self::CheckConfigDistFile();
self::CheckComposer();
self::CheckPhpExtensions();
self::CheckSqliteVersion();
}
private function checkForComposer()
private function CheckComposer()
{
if (!file_exists(__DIR__ . '/../packages/autoload.php'))
{
@ -35,7 +35,7 @@ class PrerequisiteChecker
}
}
private function checkForConfigDistFile()
private function CheckConfigDistFile()
{
if (!file_exists(__DIR__ . '/../config-dist.php'))
{
@ -43,7 +43,7 @@ class PrerequisiteChecker
}
}
private function checkForConfigFile()
private function CheckConfigFile()
{
if (!file_exists(GROCY_DATAPATH . '/config.php'))
{
@ -51,7 +51,7 @@ class PrerequisiteChecker
}
}
private function checkForPhpExtensions()
private function CheckPhpExtensions()
{
$loadedExtensions = get_loaded_extensions();
foreach (REQUIRED_PHP_EXTENSIONS as $extension)
@ -63,16 +63,16 @@ class PrerequisiteChecker
}
}
private function checkForSqliteVersion()
private function CheckSqliteVersion()
{
$sqliteVersion = self::getSqlVersionAsString();
$sqliteVersion = self::GetSqlVersion();
if (version_compare($sqliteVersion, REQUIRED_SQLITE_VERSION, '<'))
{
throw new ERequirementNotMet('SQLite ' . REQUIRED_SQLITE_VERSION . ' is required, however you are running ' . $sqliteVersion);
}
}
private function checkForPhpVersion()
private function CheckPhpVersion()
{
$phpVersion = phpversion();
if (version_compare($phpVersion, REQUIRED_PHP_VERSION, '<'))
@ -81,7 +81,7 @@ class PrerequisiteChecker
}
}
private function getSqlVersionAsString()
private function GetSqlVersion(): string
{
$dbh = new \PDO('sqlite::memory:');
return $dbh->query('select sqlite_version()')->fetch()[0];

View File

@ -39,6 +39,7 @@ try
}
catch (Grocy\Helpers\ERequirementNotMet $ex)
{
http_response_code(500);
exit('Unable to run Grocy: ' . $ex->getMessage());
}