Changeset View
Changeset View
Standalone View
Standalone View
conf/__init_conf__.php
| <?php | <?php | ||||
| function phabricator_read_config_file($original_config) { | function phabricator_read_config_file($original_config) { | ||||
| $root = dirname(dirname(__FILE__)); | $root = dirname(dirname(__FILE__)); | ||||
| // Accept either "myconfig" (preferred) or "myconfig.conf.php". | // Accept either "myconfig" (preferred) or "myconfig.conf.php". | ||||
| $config = preg_replace('/\.conf\.php$/', '', $original_config); | $config = preg_replace('/\.conf\.php$/', '', $original_config); | ||||
| $full_config_path = $root.'/conf/'.$config.'.conf.php'; | $full_config_path = $root.'/conf/'.$config.'.conf.php'; | ||||
| // Make sure config file errors are reported. | |||||
| $old_error_level = error_reporting(E_ALL | E_STRICT); | |||||
| $old_display_errors = ini_get('display_errors'); | |||||
| ini_set('display_errors', 1); | |||||
| ob_start(); | |||||
| $conf = include $full_config_path; | |||||
| $errors = ob_get_clean(); | |||||
| error_reporting($old_error_level); | |||||
| ini_set('display_errors', $old_display_errors); | |||||
| if ($conf === false) { | |||||
| if (!Filesystem::pathExists($full_config_path)) { | if (!Filesystem::pathExists($full_config_path)) { | ||||
| // These are very old configuration files which we used to ship with | // These are very old configuration files which we used to ship with | ||||
| // by default. File based configuration was de-emphasized once web-based | // by default. File based configuration was de-emphasized once web-based | ||||
| // configuration was built. The actual files were removed to reduce | // configuration was built. The actual files were removed to reduce | ||||
| // user confusion over how to configure Phabricator. | // user confusion over how to configure Phabricator. | ||||
| switch ($config) { | switch ($config) { | ||||
| case 'default': | case 'default': | ||||
| case 'production': | case 'production': | ||||
| return array(); | return array(); | ||||
| case 'development': | case 'development': | ||||
| return array( | return array( | ||||
| 'phabricator.developer-mode' => true, | 'phabricator.developer-mode' => true, | ||||
| 'darkconsole.enabled' => true, | 'darkconsole.enabled' => true, | ||||
| 'celerity.minify' => false, | 'celerity.minify' => false, | ||||
| ); | ); | ||||
| } | } | ||||
| $files = id(new FileFinder($root.'/conf/')) | $files = id(new FileFinder($root.'/conf/')) | ||||
| ->withType('f') | ->withType('f') | ||||
| ->withSuffix('conf.php') | ->withSuffix('conf.php') | ||||
| ->withFollowSymlinks(true) | ->withFollowSymlinks(true) | ||||
| ->find(); | ->find(); | ||||
| foreach ($files as $key => $file) { | foreach ($files as $key => $file) { | ||||
| $file = trim($file, './'); | $file = trim($file, './'); | ||||
| $files[$key] = preg_replace('/\.conf\.php$/', '', $file); | $files[$key] = preg_replace('/\.conf\.php$/', '', $file); | ||||
| } | } | ||||
| $files = " ".implode("\n ", $files); | $files = " ".implode("\n ", $files); | ||||
| throw new Exception( | throw new Exception( | ||||
| "CONFIGURATION ERROR\n". | "CONFIGURATION ERROR\n". | ||||
| "Config file '{$original_config}' does not exist. Valid config files ". | "Config file '{$original_config}' does not exist. Valid config files ". | ||||
| "are:\n\n".$files); | "are:\n\n".$files); | ||||
| } | } | ||||
| // Make sure config file errors are reported. | |||||
| $old_error_level = error_reporting(E_ALL | E_STRICT); | |||||
| $old_display_errors = ini_get('display_errors'); | |||||
| ini_set('display_errors', 1); | |||||
| ob_start(); | |||||
| $conf = include $full_config_path; | |||||
| $errors = ob_get_clean(); | |||||
| error_reporting($old_error_level); | |||||
| ini_set('display_errors', $old_display_errors); | |||||
| if ($conf === false) { | |||||
| throw new Exception("Failed to read config file '{$config}': {$errors}"); | throw new Exception("Failed to read config file '{$config}': {$errors}"); | ||||
| } | } | ||||
| return $conf; | return $conf; | ||||
| } | } | ||||