{"record":{"id":"3a68e481f9b382af","repo":"flarum/framework","slug":"one-or-more-extensions-have-changed-but-ignoring-due-to-flag","errorCode":null,"errorMessage":"One or more extensions have changed, but ignoring due to flag --ignore-extension-toggles.","messagePattern":"One or more extensions have changed, but ignoring due to flag --ignore-extension-toggles\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"extensions/realtime/src/Websocket/Console/ServeCommand.php","lineNumber":219,"sourceCode":"                $newState = $app->make(SettingsRepositoryInterface::class)->get('extensions_enabled');\n            } else {\n                /** @var ConnectionInterface $connection */\n                $connection = $app->make(ConnectionInterface::class);\n                $newState = $connection->table('settings')\n                    ->where('key', 'extensions_enabled')\n                    ->value('value');\n            }\n\n            if ($enabled === null || $newState === $enabled) {\n                $enabled = $newState;\n\n                return;\n            }\n\n            if ($this->option('ignore-extension-toggles')) {\n                $enabled = $newState;\n\n                $this->warn('One or more extensions have changed, but ignoring due to flag --ignore-extension-toggles.');\n\n                return;\n            }\n\n            $this->warn('One or more extensions have changed, killing to restart.');\n\n            $loop->stop();\n        });\n    }\n}\n","sourceCodeStart":201,"sourceCodeEnd":230,"githubUrl":"https://github.com/flarum/framework/blob/4b939f685389bfe8a380e9e28ddf305a1c66950c/extensions/realtime/src/Websocket/Console/ServeCommand.php#L201-L230","documentation":"ServeCommand watches the enabled-extension state while serving; if extensions were enabled/disabled mid-serve but --ignore-extension-toggles was passed, it warns that changes are detected yet ignored, updates its cached state, and keeps the loop running without restart.","triggerScenarios":"Running the websocket serve command with --ignore-extension-toggles while something (admin panel, flarum CLI) enables or disables an extension during the process lifetime.","commonSituations":"Deploy tooling toggling extensions while a dev websocket server runs; operators deliberately suppressing restarts to avoid interrupting active connections.","solutions":["Remove --ignore-extension-toggles so the server restarts and picks up extension changes","Restart the serve command manually after the extension changes if needed","Ensure extension state is stable before starting a long-serving process"],"exampleFix":"// before\nphp flarum serve --ignore-extension-toggles\n// after\nphp flarum serve   # restarts on extension toggles","handlingStrategy":"fallback","validationCode":"# keep extension state stable before serving\nphp flarum info | grep -i extension","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Avoid --ignore-extension-toggles in production; restart instead","Freeze extension changes during serve sessions","Log extension toggle events to correlate with the warning"],"tags":["websocket","extensions","restart-suppressed"],"backgroundTag":"invalid-flag-value","analyzedSha":"4b939f685389bfe8a380e9e28ddf305a1c66950c","analyzedAt":"2026-09-15T18:09:20.879Z","contentChangedAt":"2026-09-15T18:09:20.879Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}