octobercms/october · error · ApplicationException

The combiner file ':name' is not found.

Error message

The combiner file ':name' is not found.

What it means

CombineAssets serves merged CSS/JS through the /combine route using a cache id that maps to the list of source files and their metadata. getContents($cacheKey) looks that id up via getCache(); on a miss (no stored record for the id) it throws ApplicationException naming the requested key. The URL itself is generated when a page renders, so a miss almost always means cached metadata was flushed or moved while some rendered output still references the old combined URL.

Source

Thrown at modules/system/classes/CombineAssets.php:224

        $rewritePath = File::localToPublic(dirname($destination));

        $combiner = $this->prepareCombiner($assets, $rewritePath, ['useCache' => false]);

        $contents = $combiner->dump();

        File::put($destination, $contents);
    }

    /**
     * Returns the combined contents from a prepared cache identifier.
     * @param string $cacheKey Cache identifier.
     * @return string Combined file contents.
     */
    public function getContents($cacheKey)
    {
        $cacheInfo = $this->getCache($cacheKey);
        if (!$cacheInfo) {
            throw new ApplicationException(__("The combiner file ':name' is not found.", ['name' => e($cacheKey)]));
        }

        // Ensure defaults
        $cacheInfo += [
            'version' => null,
            'etag' => null,
            'lastMod' => null,
            'files' => null,
            'path' => null,
            'extension' => null,
            'site' => null,
            'theme' => null,
        ];

        $this->setActiveSiteContext($cacheInfo['site'], $cacheInfo['theme']);
        $this->setLocalPath($cacheInfo['path']);

        // Analyze cache information

View on GitHub (pinned to b608633a7e)

Solutions

  1. Clear the CMS/page cache and reload the page so it re-renders with fresh combine URLs: php artisan cache:clear, then a hard refresh (the id is regenerated at render time).
  2. Purge any static page cache or CDN layer still serving HTML that contains the old /combine/<id> URL.
  3. Make sure every web node uses the same shared cache store (CACHE_DRIVER) so ids exist wherever the request lands.
  4. If it recurs, confirm the cache store is not being cleared by cron/deploy scripts while long-lived HTML references it.

Example fix

# before: deploy script clears cache but CDN keeps old HTML
php artisan cache:clear

# after: flush HTML caches that reference combined asset URLs too
php artisan cache:clear && php artisan cms:cache:clear
cdn-purge "/*"
Defensive patterns

Strategy: fallback

Validate before calling

// Before serving a page that embeds combined asset URLs, confirm the key still resolves
use System\Classes\CombineAssets;

function combinedAssetUrlExists(string $url): bool
{
    $key = basename(parse_url($url, PHP_URL_PATH));
    try {
        CombineAssets::instance()->getContents($key);
        return true;
    } catch (\Throwable $e) {
        return false;
    }
}

Try / catch

// In a custom route/error handler around /combine
use October\Rain\Exception\ApplicationException;

try {
    return response(CombineAssets::instance()->getContents($cacheKey), 200, $headers);
} catch (ApplicationException $e) {
    // Regenerate or fail with a cacheable 404 so CDNs stop retrying the stale URL
    return response()->noContent()->setStatusCode(404, 'Combined asset expired');
}

Prevention

When it happens

Trigger: Running php artisan cache:clear or the CMS combiner reset after pages were cached/CDN'd — old /combine/<id> URLs now 404 via this exception; switching CACHE_DRIVER (e.g. file to redis) so previously stored ids vanish; a load-balanced deployment where only one node shares the cache; a stale static-page cache or CDN edge still serving markup with the old asset URL.

Common situations: Right after deploys that clear caches; enabling/disabling plugins (bundle membership changes); mixed cache stores across environments; bots or browsers holding old HTML alive past a cache flush.

Related errors


AI-assisted analysis of octobercms/october@b608633a7e (2026-08-21). Data as JSON: /api/errors/d216bd8ee3897031. Report an issue: GitHub.