phacility/phabricator · error · PhutilArgumentUsageException
Configuration file does not specify any administrative serve
Error message
Configuration file does not specify any administrative servers. This service will be unable to receive messages. You must specify at least one server with type "%s".
What it means
Thrown when the Aphlict config's servers list has no entry with type "admin". The admin listener is where the Phabricator web tier POSTS notification messages (e.g. via PhabricatorNotificationServerRef); without it the service can never receive messages, so config validation fails.
Source
Thrown at src/applications/aphlict/management/PhabricatorAphlictManagementWorkflow.php:190
'will not be able to interact with the outside world if it does '.
'not listen on any ports. You must specify at least one "%s" '.
'server and at least one "%s" server.',
'admin',
'client'));
}
if (!$has_client) {
throw new PhutilArgumentUsageException(
pht(
'Configuration file does not specify any client servers. This '.
'service will be unable to transmit any notifications without a '.
'client server. You must specify at least one server with '.
'type "%s".',
'client'));
}
if (!$has_admin) {
throw new PhutilArgumentUsageException(
pht(
'Configuration file does not specify any administrative '.
'servers. This service will be unable to receive messages. '.
'You must specify at least one server with type "%s".',
'admin'));
}
$logs = idx($data, 'logs', array());
foreach ($logs as $index => $log) {
PhutilTypeSpec::checkMap(
$log,
array(
'path' => 'string',
));
$path = $log['path'];
try {View on GitHub (pinned to 5720a38cfe)
Solutions
- Add {"type": "admin", "port": 22281} (bind it to 127.0.0.1 with "listen" if the web tier is on the same host)
- Confirm Phabricator's cluster notification config points at the same host:port you configure here
Example fix
// before
"servers": [{"type": "client", "port": 22280}]
// after
"servers": [
{"type": "client", "port": 22280},
{"type": "admin", "port": 22281, "listen": "127.0.0.1"}
] Defensive patterns
Strategy: validation
Validate before calling
$types = array();
foreach ($config['servers'] as $server) {
$types[] = idx($server, 'type');
}
if (!in_array('admin', $types, true)) {
throw new InvalidArgumentException('No admin server configured; Phabricator cannot post messages');
} Prevention
- Pair every client listener with an admin listener; the web tier needs somewhere to POST
When it happens
Trigger: "servers" contains only client entries; admin entry removed during a cleanup or its type was typo'd so $has_admin never becomes true.
Common situations: Minimal config copied from a browser-only websocket example; security tightening that dropped the admin listener without wiring an alternative.
Related errors
- Configuration file does not specify any client servers. This
- Specify a user to notify with "--user".
- No user with username "%s" exists.
- Specify a message to send with "--message".
- Failed to read configuration file. %s
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/d323fc19ae48e370.
Report an issue: GitHub.