diff --git a/src/infrastructure/setup/PhabricatorSetup.php b/src/infrastructure/setup/PhabricatorSetup.php index a740cce548..d65f4c3c11 100644 --- a/src/infrastructure/setup/PhabricatorSetup.php +++ b/src/infrastructure/setup/PhabricatorSetup.php @@ -735,12 +735,19 @@ final class PhabricatorSetup { } self::writeHeader('CONFIG CLASSES'); - foreach (PhabricatorEnv::getRequiredClasses() as $key => $class) { - if (!PhabricatorEnv::getEnvConfig($key)) { + foreach (PhabricatorEnv::getRequiredClasses() as $key => $instanceof) { + $config = PhabricatorEnv::getEnvConfig($key); + if (!$config) { self::writeNote("'$key' is not set."); } else { try { - PhabricatorEnv::newObjectFromConfig($key); + $r = new ReflectionClass($config); + if (!$r->isSubclassOf($instanceof)) { + throw new Exception( + "Config setting '$key' must be an instance of '$instanceof'."); + } elseif (!$r->isInstantiable()) { + throw new Exception("Config setting '$key' must be instantiable."); + } } catch (Exception $ex) { self::writeFailure(); self::write("Setup failure! ".$ex->getMessage());