diff --git a/cfg/conf.sample.php b/cfg/conf.sample.php index d362f3f2..7194ee57 100644 --- a/cfg/conf.sample.php +++ b/cfg/conf.sample.php @@ -161,7 +161,7 @@ class = Filesystem [model_options] dir = PATH "data" -[model] +;[model] ; example of a Google Cloud Storage configuration ;class = GoogleCloudStorage ;[model_options] diff --git a/lib/Configuration.php b/lib/Configuration.php index 7c4eb106..d8ef346b 100644 --- a/lib/Configuration.php +++ b/lib/Configuration.php @@ -101,16 +101,23 @@ class Configuration */ public function __construct() { + $basePaths = array(); $config = array(); - $basePath = (getenv('CONFIG_PATH') !== false ? getenv('CONFIG_PATH') : PATH . 'cfg') . DIRECTORY_SEPARATOR; - $configFile = $basePath . 'conf.php'; - - if (is_readable($configFile)) { - $config = parse_ini_file($configFile, true); - foreach (array('main', 'model', 'model_options') as $section) { - if (!array_key_exists($section, $config)) { - throw new Exception(I18n::_('PrivateBin requires configuration section [%s] to be present in configuration file.', $section), 2); + $configPath = getenv('CONFIG_PATH'); + if ($configPath !== false && !empty($configPath)) { + $basePaths[] = $configPath; + } + $basePaths[] = PATH . 'cfg'; + foreach ($basePaths as $basePath) { + $configFile = $basePath . DIRECTORY_SEPARATOR . 'conf.php'; + if (is_readable($configFile)) { + $config = parse_ini_file($configFile, true); + foreach (array('main', 'model', 'model_options') as $section) { + if (!array_key_exists($section, $config)) { + throw new Exception(I18n::_('PrivateBin requires configuration section [%s] to be present in configuration file.', $section), 2); + } } + break; } }