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
- Set the bucket: ./bin/config set storage.s3.bucket <bucket-name>
- Verify the bucket name is correct and reachable (credentials, region, endpoint) with a test upload afterwards
- 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
- Encode required-per-engine settings as a config checklist applied by deployment tooling
- Test one upload immediately after switching storage engines
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
- Malformed local disk storage root. You must provide an absol
- Unable to establish a connection to any database host (while
- Configuration file is not properly formatted JSON. %s
- Configuration file has improper configuration keys at top le
- Two servers (at indexes "%s" and "%s") both bind to the same
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/3e83569603ae4c0b.
Report an issue: GitHub.