{"record":{"id":"d323fc19ae48e370","repo":"phacility/phabricator","slug":"configuration-file-does-not-specify-any-administra","errorCode":null,"errorMessage":"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\".","messagePattern":"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 \"(.+?)\"\\.","errorType":"console","errorClass":"PhutilArgumentUsageException","httpStatus":null,"severity":"error","filePath":"src/applications/aphlict/management/PhabricatorAphlictManagementWorkflow.php","lineNumber":190,"sourceCode":"          'will not be able to interact with the outside world if it does '.\n          'not listen on any ports. You must specify at least one \"%s\" '.\n          'server and at least one \"%s\" server.',\n          'admin',\n          'client'));\n    }\n\n    if (!$has_client) {\n      throw new PhutilArgumentUsageException(\n        pht(\n          'Configuration file does not specify any client servers. This '.\n          'service will be unable to transmit any notifications without a '.\n          'client server. You must specify at least one server with '.\n          'type \"%s\".',\n          'client'));\n    }\n\n    if (!$has_admin) {\n      throw new PhutilArgumentUsageException(\n        pht(\n          'Configuration file does not specify any administrative '.\n          'servers. This service will be unable to receive messages. '.\n          'You must specify at least one server with type \"%s\".',\n          'admin'));\n    }\n\n    $logs = idx($data, 'logs', array());\n    foreach ($logs as $index => $log) {\n      PhutilTypeSpec::checkMap(\n        $log,\n        array(\n          'path' => 'string',\n        ));\n\n      $path = $log['path'];\n\n      try {","sourceCodeStart":172,"sourceCodeEnd":208,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/aphlict/management/PhabricatorAphlictManagementWorkflow.php#L172-L208","documentation":"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.","triggerScenarios":"\"servers\" contains only client entries; admin entry removed during a cleanup or its type was typo'd so $has_admin never becomes true.","commonSituations":"Minimal config copied from a browser-only websocket example; security tightening that dropped the admin listener without wiring an alternative.","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"],"exampleFix":"// before\n\"servers\": [{\"type\": \"client\", \"port\": 22280}]\n// after\n\"servers\": [\n  {\"type\": \"client\", \"port\": 22280},\n  {\"type\": \"admin\",  \"port\": 22281, \"listen\": \"127.0.0.1\"}\n]","handlingStrategy":"validation","validationCode":"$types = array();\nforeach ($config['servers'] as $server) {\n  $types[] = idx($server, 'type');\n}\nif (!in_array('admin', $types, true)) {\n  throw new InvalidArgumentException('No admin server configured; Phabricator cannot post messages');\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pair every client listener with an admin listener; the web tier needs somewhere to POST"],"tags":["aphlict","configuration","notifications","phabricator"],"backgroundTag":"missing-required-config","analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}