phacility/phabricator · error · PhabricatorFileStorageConfigurationException

No '%s' specified!

Error message

No '%s' specified!

What it means

PhabricatorS3FileStorageEngine::getBucketName() reads storage.s3.bucket from environment configuration and throws PhabricatorFileStorageConfigurationException when it is empty. The S3 engine was selected without its one required setting, so no S3 operation (write or read) can proceed.

Source

Thrown at src/applications/files/engine/PhabricatorS3FileStorageEngine.php:144

      ->setParametersForDeleteObject($handle)
      ->resolve();

    $profiler->endServiceCall($call_id, array());
  }


/* -(  Internals  )---------------------------------------------------------- */


  /**
   * Retrieve the S3 bucket name.
   *
   * @task internal
   */
  private function getBucketName() {
    $bucket = PhabricatorEnv::getEnvConfig('storage.s3.bucket');
    if (!$bucket) {
      throw new PhabricatorFileStorageConfigurationException(
        pht(
          "No '%s' specified!",
          'storage.s3.bucket'));
    }
    return $bucket;
  }

  /**
   * Create a new S3 API object.
   *
   * @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');

View on GitHub (pinned to 5720a38cfe)

Solutions

  1. Set the bucket: ./bin/config set storage.s3.bucket <bucket-name>
  2. Verify the bucket name is correct and reachable (credentials, region, endpoint) with a test upload afterwards
  3. If S3 was selected unintentionally, switch the storage engine selection back to local-disk or MySQL storage

Example fix

# before: S3 engine selected, no bucket configured

# after
./bin/config set storage.s3.bucket my-phabricator-files
Defensive patterns

Strategy: validation

Validate before calling

if (!strlen((string)PhabricatorEnv::getEnvConfig('storage.s3.bucket'))) {
  // S3 engine unusable: block selection until the bucket is configured
}

Try / catch

catch PhabricatorFileStorageConfigurationException at engine selection/startup and fail with a clear setup message naming storage.s3.bucket.

Prevention

When it happens

Trigger: Configuring uploads to use the S3 storage engine while storage.s3.bucket is unset or set to an empty string; environment-specific config missing in one deployment tier.

Common situations: Copy-pasted configuration that omitted the bucket line; staging config promoted to production without the bucket; typo in the config key name leaving the real value unset.

Related errors


AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21). Data as JSON: /api/errors/3e83569603ae4c0b. Report an issue: GitHub.