diff --git a/scripts/__init_script__.php b/scripts/__init_script__.php --- a/scripts/__init_script__.php +++ b/scripts/__init_script__.php @@ -1,24 +1,3 @@ false, + )); diff --git a/scripts/init/init-setup.php b/scripts/init/init-setup.php new file mode 100644 --- /dev/null +++ b/scripts/init/init-setup.php @@ -0,0 +1,12 @@ + true, + )); diff --git a/scripts/__init_script__.php b/scripts/init/lib.php copy from scripts/__init_script__.php copy to scripts/init/lib.php --- a/scripts/__init_script__.php +++ b/scripts/init/lib.php @@ -1,13 +1,13 @@ setTagline(pht('manage configuration')); diff --git a/scripts/sql/manage_storage.php b/scripts/sql/manage_storage.php --- a/scripts/sql/manage_storage.php +++ b/scripts/sql/manage_storage.php @@ -2,7 +2,7 @@ setTagline(pht('manage Phabricator storage and schemata')); diff --git a/src/infrastructure/env/PhabricatorEnv.php b/src/infrastructure/env/PhabricatorEnv.php --- a/src/infrastructure/env/PhabricatorEnv.php +++ b/src/infrastructure/env/PhabricatorEnv.php @@ -68,11 +68,11 @@ * @phutil-external-symbol class PhabricatorStartup */ public static function initializeWebEnvironment() { - self::initializeCommonEnvironment(); + self::initializeCommonEnvironment(false); } - public static function initializeScriptEnvironment() { - self::initializeCommonEnvironment(); + public static function initializeScriptEnvironment($config_optional) { + self::initializeCommonEnvironment($config_optional); // NOTE: This is dangerous in general, but we know we're in a script context // and are not vulnerable to CSRF. @@ -88,11 +88,11 @@ } - private static function initializeCommonEnvironment() { + private static function initializeCommonEnvironment($config_optional) { PhutilErrorHandler::initialize(); self::resetUmask(); - self::buildConfigurationSourceStack(); + self::buildConfigurationSourceStack($config_optional); // Force a valid timezone. If both PHP and Phabricator configuration are // invalid, use UTC. @@ -174,7 +174,7 @@ } } - private static function buildConfigurationSourceStack() { + private static function buildConfigurationSourceStack($config_optional) { self::dropConfigCache(); $stack = new PhabricatorConfigStackSource(); @@ -235,6 +235,14 @@ // If the database is not available, just skip this configuration // source. This happens during `bin/storage upgrade`, `bin/conf` before // schema setup, etc. + } catch (AphrontConnectionQueryException $ex) { + if (!$config_optional) { + throw $ex; + } + } catch (AphrontInvalidCredentialsQueryException $ex) { + if (!$config_optional) { + throw $ex; + } } }