{"record":{"id":"8db00ff24f1fbcff","repo":"octobercms/october","slug":"the-combiner-file-name-is-not-found-8db00f","errorCode":null,"errorMessage":"The combiner file ':name' is not found.","messagePattern":"The combiner file ':name' is not found\\.","errorType":"exception","errorClass":"ApplicationException","httpStatus":null,"severity":"warning","filePath":"modules/system/classes/SystemController.php","lineNumber":29,"sourceCode":" * SystemController is the master controller for system related routing.\n * It is currently only responsible for serving up the asset combiner contents.\n *\n * @see System\\Classes\\CombineAssets Asset combiner class\n * @package october\\system\n * @author Alexey Bobkov, Samuel Georges\n */\nclass SystemController extends ControllerBase\n{\n    /**\n     * combine JavaScript and StyleSheet asset files\n     * @param string $name Combined file code\n     * @return string Combined content.\n     */\n    public function combine($name)\n    {\n        try {\n            if (!strpos($name, '-')) {\n                throw new ApplicationException(__(\"The combiner file ':name' is not found.\", ['name' => $name]));\n            }\n\n            $parts = explode('-', $name);\n\n            $cacheId = $parts[0];\n\n            $combiner = CombineAssets::instance();\n\n            return $combiner->getContents($cacheId);\n        }\n        catch (Exception $ex) {\n            if (System::checkDebugMode()) {\n                return Response::make(e($ex->getMessage()), 404);\n            }\n            else {\n                return Response::make('/* '.e(Lang::get('system::lang.page.custom_error.help')).' */', 404);\n            }\n        }","sourceCodeStart":11,"sourceCodeEnd":47,"githubUrl":"https://github.com/octobercms/october/blob/b608633a7e8922487d91a8161499020121c3b3bf/modules/system/classes/SystemController.php#L11-L47","documentation":"SystemController::combine($name) serves combined JS/CSS from URLs like /combine/{cacheId}-{suffix}. The handler first checks that the name contains a '-' separator (strpos); without a dash there is no cache id to look up, so it throws an ApplicationException naming the malformed file. In production this surfaces as a 404; with debug mode on you get the full error instead. It is essentially a URL-format guard for CombineAssets::getContents($cacheId).","triggerScenarios":"An HTTP request to the combine route whose segment has no dash: /combine/abc123 instead of /combine/abc123-file.js. Caused by hand-edited or truncated asset URLs, rewritten URLs stripping the suffix, or stale/cached HTML referencing a different combine URL scheme.","commonSituations":"CDN or browser cache serving markup from an older release with a different combine URL format; a misconfigured rewrite rule trimming the suffix; scrapers/bots probing /combine/*; a base-url change leaving relative asset URLs mangled.","solutions":["Hard-refresh and purge CDN/page caches so pages emit the current combine URLs generated by CombineAssets","Check webserver rewrite rules and config/cms.php asset settings for anything mangling the combined asset URL","Regenerate combined assets (`php artisan october:util compile assets`) so fresh cache ids are in use","Ignore if isolated: single malformed probe requests are harmless 404s; investigate only if real pages reference the bad URL"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"// If you invoke the combiner yourself, validate the token shape first\nif (!str_contains($name, '-')) {\n    abort(404, 'Malformed combine asset token');\n}\nreturn \\System\\Classes\\CombineAssets::instance()->getContents(explode('-', $name)[0]);","typeGuard":null,"tryCatchPattern":"try {\n    return $combiner->getContents($cacheId);\n} catch (\\October\\Rain\\Exception\\ApplicationException $ex) {\n    // unknown/malformed combine id — regenerate assets and serve a clean 404\n    abort(404);\n}","preventionTips":["Purge CDN and page caches on every deploy that changes asset URLs","Never hand-write /combine/ URLs in templates","Monitor 404s on /combine/* to catch stale-URL rollouts early"],"tags":["octobercms","assets","combiner","http-404","route"],"backgroundTag":"malformed-asset-url","analyzedSha":"b608633a7e8922487d91a8161499020121c3b3bf","analyzedAt":"2026-08-21T04:24:57.515Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}