diff --git a/src/applications/files/engine/PhabricatorS3FileStorageEngine.php b/src/applications/files/engine/PhabricatorS3FileStorageEngine.php --- a/src/applications/files/engine/PhabricatorS3FileStorageEngine.php +++ b/src/applications/files/engine/PhabricatorS3FileStorageEngine.php @@ -25,17 +25,17 @@ } public function canWriteFiles() { - $bucket = PhabricatorEnv::getEnvConfig('storage.s3.bucket'); - $access_key = PhabricatorEnv::getEnvConfig('amazon-s3.access-key'); - $secret_key = PhabricatorEnv::getEnvConfig('amazon-s3.secret-key'); - $endpoint = PhabricatorEnv::getEnvConfig('amazon-s3.endpoint'); - $region = PhabricatorEnv::getEnvConfig('amazon-s3.region'); - - return (strlen($bucket) && - strlen($access_key) && - strlen($secret_key) && - strlen($endpoint) && - strlen($region)); + $bucket = PhabricatorEnv::getEnvConfigStr('storage.s3.bucket'); + $access_key = PhabricatorEnv::getEnvConfigStr('amazon-s3.access-key'); + $secret_key = PhabricatorEnv::getEnvConfigStr('amazon-s3.secret-key'); + $endpoint = PhabricatorEnv::getEnvConfigStr('amazon-s3.endpoint'); + $region = PhabricatorEnv::getEnvConfigStr('amazon-s3.region'); + + return $bucket !== '' && + $access_key !== '' && + $secret_key !== '' && + $endpoint !== '' && + $region !== ''; } @@ -56,8 +56,8 @@ $parts = array(); $parts[] = 'phabricator'; - $instance_name = PhabricatorEnv::getEnvConfig('cluster.instance'); - if (strlen($instance_name)) { + $instance_name = PhabricatorEnv::getEnvConfigStr('cluster.instance'); + if ($instance_name !== '') { $parts[] = $instance_name; } @@ -139,7 +139,7 @@ * @task internal */ private function getBucketName() { - $bucket = PhabricatorEnv::getEnvConfig('storage.s3.bucket'); + $bucket = PhabricatorEnv::getEnvConfigStr('storage.s3.bucket'); if (!$bucket) { throw new PhabricatorFileStorageConfigurationException( pht( @@ -155,10 +155,10 @@ * @task internal */ private function newS3API() { - $access_key = PhabricatorEnv::getEnvConfig('amazon-s3.access-key'); - $secret_key = PhabricatorEnv::getEnvConfig('amazon-s3.secret-key'); - $region = PhabricatorEnv::getEnvConfig('amazon-s3.region'); - $endpoint = PhabricatorEnv::getEnvConfig('amazon-s3.endpoint'); + $access_key = PhabricatorEnv::getEnvConfigStr('amazon-s3.access-key'); + $secret_key = PhabricatorEnv::getEnvConfigStr('amazon-s3.secret-key'); + $region = PhabricatorEnv::getEnvConfigStr('amazon-s3.region'); + $endpoint = PhabricatorEnv::getEnvConfigStr('amazon-s3.endpoint'); return id(new PhutilAWSS3Future()) ->setAccessKey($access_key) diff --git a/src/applications/files/storage/PhabricatorFile.php b/src/applications/files/storage/PhabricatorFile.php --- a/src/applications/files/storage/PhabricatorFile.php +++ b/src/applications/files/storage/PhabricatorFile.php @@ -855,8 +855,8 @@ // request domain used by the CDN (as with AWS CloudFront). Embedding the // instance identity in the path allows us to distinguish between requests // originating from different instances but served through the same CDN. - $instance = PhabricatorEnv::getEnvConfig('cluster.instance'); - if (strlen($instance)) { + $instance = PhabricatorEnv::getEnvConfigStr('cluster.instance'); + if ($instance !== '') { $parts[] = '@'.$instance; } @@ -902,8 +902,8 @@ $parts[] = 'file'; $parts[] = 'xform'; - $instance = PhabricatorEnv::getEnvConfig('cluster.instance'); - if (strlen($instance)) { + $instance = PhabricatorEnv::getEnvConfigStr('cluster.instance'); + if ($instance !== '') { $parts[] = '@'.$instance; } diff --git a/src/applications/metamta/engine/PhabricatorMailEmailEngine.php b/src/applications/metamta/engine/PhabricatorMailEmailEngine.php --- a/src/applications/metamta/engine/PhabricatorMailEmailEngine.php +++ b/src/applications/metamta/engine/PhabricatorMailEmailEngine.php @@ -505,9 +505,8 @@ } public function newDefaultEmailAddress() { - $raw_address = PhabricatorEnv::getEnvConfig('metamta.default-address'); - - if (!strlen($raw_address)) { + $raw_address = PhabricatorEnv::getEnvConfigStr('metamta.default-address'); + if (!$raw_address) { $domain = $this->newMailDomain(); $raw_address = "noreply@{$domain}"; } @@ -526,8 +525,8 @@ } private function newMailDomain() { - $domain = PhabricatorEnv::getEnvConfig('metamta.reply-handler-domain'); - if (strlen($domain)) { + $domain = PhabricatorEnv::getEnvConfigStr('metamta.reply-handler-domain'); + if ($domain) { return $domain; } diff --git a/src/applications/repository/storage/PhabricatorRepository.php b/src/applications/repository/storage/PhabricatorRepository.php --- a/src/applications/repository/storage/PhabricatorRepository.php +++ b/src/applications/repository/storage/PhabricatorRepository.php @@ -2480,7 +2480,7 @@ $has_https = false; } - $has_ssh = (bool)strlen(PhabricatorEnv::getEnvConfig('phd.user')); + $has_ssh = PhabricatorEnv::getEnvConfigStr('phd.user') !== ''; $protocol_map = array( PhabricatorRepositoryURI::BUILTIN_PROTOCOL_SSH => $has_ssh, diff --git a/src/infrastructure/cluster/PhabricatorDatabaseRef.php b/src/infrastructure/cluster/PhabricatorDatabaseRef.php --- a/src/infrastructure/cluster/PhabricatorDatabaseRef.php +++ b/src/infrastructure/cluster/PhabricatorDatabaseRef.php @@ -229,7 +229,7 @@ $host = $this->getHost(); $port = $this->getPort(); - if (strlen($port)) { + if ($port) { return "{$host}:{$port}"; } 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 @@ -124,8 +124,8 @@ // If an instance identifier is defined, write it into the environment so // it's available to subprocesses. - $instance = self::getEnvConfig('cluster.instance'); - if (strlen($instance)) { + $instance = self::getEnvConfigStr('cluster.instance'); + if ($instance !== '') { putenv('PHABRICATOR_INSTANCE='.$instance); $_ENV['PHABRICATOR_INSTANCE'] = $instance; } @@ -344,11 +344,13 @@ /** - * Get the current configuration setting for a given key. + * Get the current configuration setting for a given key of a generic value. * * If the key is not found, then throw an Exception. * + * @param string $key Configuration codename. Example: 'phabricator.base-uri' * @task read + * @return mixed */ public static function getEnvConfig($key) { if (!self::$sourceStack) { @@ -379,6 +381,21 @@ } } + + /** + * Get the current configuration setting for a given key with a string value. + * + * If the key is not found, then throw an Exception. + * + * @param string $key Configuration codename. Example: 'phabricator.base-uri' + * @task read + * @return string + */ + public static function getEnvConfigStr($key) { + return (string)self::getEnvConfig($key); + } + + /** * Get the current configuration setting for a given key. If the key * does not exist, return a default value instead of throwing. This is