diff --git a/application/config/ConfigJson.php b/application/config/ConfigJson.php
index 30908d90..9ef2ef56 100644
--- a/application/config/ConfigJson.php
+++ b/application/config/ConfigJson.php
@@ -21,8 +21,14 @@ public function read($filepath)
$data = str_replace(self::getPhpSuffix(), '', $data);
$data = json_decode($data, true);
if ($data === null) {
- $error = json_last_error();
- throw new \Exception('An error occurred while parsing JSON file: error code #'. $error);
+ $errorCode = json_last_error();
+ $error = 'An error occurred while parsing JSON configuration file ('. $filepath .'): error code #';
+ $error .= $errorCode. '
➜ ' . json_last_error_msg() .'
';
+ if ($errorCode === JSON_ERROR_SYNTAX) {
+ $error .= '
Please check your JSON syntax (without PHP comment tags) using a JSON lint tool such as ';
+ $error .= 'jsonlint.com.';
+ }
+ throw new \Exception($error);
}
return $data;
}
diff --git a/application/config/ConfigManager.php b/application/config/ConfigManager.php
index f2097410..e98af8ab 100644
--- a/application/config/ConfigManager.php
+++ b/application/config/ConfigManager.php
@@ -81,7 +81,11 @@ protected function initialize()
*/
protected function load()
{
- $this->loadedConfig = $this->configIO->read($this->getConfigFileExt());
+ try {
+ $this->loadedConfig = $this->configIO->read($this->getConfigFileExt());
+ } catch (\Exception $e) {
+ die($e->getMessage());
+ }
$this->setDefaultValues();
}
diff --git a/tests/config/ConfigJsonTest.php b/tests/config/ConfigJsonTest.php
index 3527f83d..d237bc80 100644
--- a/tests/config/ConfigJsonTest.php
+++ b/tests/config/ConfigJsonTest.php
@@ -40,7 +40,7 @@ public function testReadNonExistent()
* Read a non existent config file -> empty array.
*
* @expectedException \Exception
- * @expectedExceptionMessage An error occurred while parsing JSON file: error code #4
+ * @expectedExceptionMessageRegExp /An error occurred while parsing JSON configuration file \([\w\/\.]+\): error code #4/
*/
public function testReadInvalidJson()
{