From 85dc601b37938fecc22be9c58bd703070ad0aa8b Mon Sep 17 00:00:00 2001 From: Bernd Bestel Date: Thu, 3 Sep 2026 19:50:39 +0200 Subject: [PATCH] Return HTTP 500 for configuration validation problems (closes #2983) --- app.php | 1 + helpers/PrerequisiteChecker.php | 28 ++++++++++++++-------------- public/index.php | 1 + 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/app.php b/app.php index 9d913d98..59ce5ef8 100644 --- a/app.php +++ b/app.php @@ -46,6 +46,7 @@ try } catch (\Grocy\Helpers\EInvalidConfig $ex) { + http_response_code(500); exit('Invalid setting in config.php: ' . $ex->getMessage()); } diff --git a/helpers/PrerequisiteChecker.php b/helpers/PrerequisiteChecker.php index dbc9c138..8688c5a4 100644 --- a/helpers/PrerequisiteChecker.php +++ b/helpers/PrerequisiteChecker.php @@ -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]; diff --git a/public/index.php b/public/index.php index 0fd46ce9..5315ab61 100644 --- a/public/index.php +++ b/public/index.php @@ -39,6 +39,7 @@ try } catch (Grocy\Helpers\ERequirementNotMet $ex) { + http_response_code(500); exit('Unable to run Grocy: ' . $ex->getMessage()); }