octobercms/october · error · ApplicationException

editor::lang.filesystem.type_not_allowed

Error message

editor::lang.filesystem.type_not_allowed

What it means

Thrown by editorRenameFileOrDirectory when renaming a FILE (directories are exempt) whose new extension is not in $allowedFileExtensions (line 84). For theme assets the list is FileDefinitions::get('asset_extensions') with less/sass/scss removed when safe mode is on. The message interpolates the allowed list: 'Only the following file types are allowed: :allowed_types'.

Solutions

  1. Keep the file's existing extension, or rename to one of the types listed in the error message
  2. If the type is genuinely needed, add it to 'asset_extensions' in config/cms.php (it merges with FileDefinitions::get)
  3. If safe mode stripped less/sass/scss, disable safe_mode (dev only) or rename to a non-preprocessor extension
  4. Create the new file with the wanted extension via upload (onAssetUpload validates the same list) instead of renaming

Example fix

// config/cms.php
// before
'asset_extensions' => FileDefinitions::get('asset_extensions'),

// after — allow xml assets
'asset_extensions' => array_merge(FileDefinitions::get('asset_extensions'), ['xml']),
Defensive patterns

Strategy: validation

Validate before calling

$allowed = FileDefinitions::get('asset_extensions');
if (System::checkSafeMode()) {
    $allowed = array_diff($allowed, ['less', 'sass', 'scss']);
}
$newExt = strtolower(pathinfo($newName, PATHINFO_EXTENSION));
if (!in_array($newExt, $allowed, true)) {
    // pick a name with an allowed extension before sending the command
}

Prevention

When it happens

Trigger: command_onAssetRename where 'name' changes the extension to a type outside the asset list, e.g. 'notes.txt', 'data.xml', or dropping the extension entirely; or renaming 'theme.less' to anything while System::checkSafeMode() is true, because getSafeAssetExtensions() strips less/sass/scss in safe mode.

Common situations: Trying to 'convert' an asset by changing its extension in the rename dialog; safe_mode enabled in config/cms.php hiding preprocessor extensions; a customized 'asset_extensions' definition in config/cms.php or a plugin that no longer includes the type you want.

Related errors


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

Appendix: source

Thrown at modules/editor/traits/FileSystemFunctions.php:84

            throw new ApplicationException(Lang::get('editor::lang.filesystem.invalid_path'));
        }

        if (!$this->validateFileSystemName($newName)) {
            throw new ApplicationException(Lang::get('editor::lang.filesystem.invalid_name'));
        }

        $originalPath = trim($originalPath);
        if (!$this->validateFileSystemPath($originalPath)) {
            throw new ApplicationException(Lang::get('editor::lang.filesystem.invalid_path'));
        }

        $originalFullPath = $basePath.'/'.$originalPath;
        if (!file_exists($originalFullPath)) {
            throw new ApplicationException(Lang::get('editor::lang.filesystem.original_not_found'));
        }

        if (!is_dir($originalFullPath) && !$this->validateFileSystemFileExtension($newName, $allowedFileExtensions)) {
            throw new ApplicationException(Lang::get(
                'editor::lang.filesystem.type_not_allowed',
                ['allowed_types' => implode(', ', $allowedFileExtensions)]
            ));
        }

        // Block renaming to a .svg target
        if (
            !is_dir($originalFullPath) &&
            Config::get('media.clean_vectors', true) &&
            strtolower(File::extension($newName)) === 'svg' &&
            strtolower(File::extension($originalPath)) !== 'svg'
        ) {
            throw new ApplicationException(Lang::get(
                'editor::lang.filesystem.type_not_allowed',
                ['allowed_types' => implode(', ', array_diff($allowedFileExtensions, ['svg']))]
            ));
        }

View on GitHub (pinned to b608633a7e)