nextcloud/all-in-one · warning · InvalidSettingConfigurationException

The dictionaries must not be empty!

Error message

The dictionaries must not be empty!

What it means

Thrown by validateCollaboraDictionaries when the collabora_dictionaries value is empty. The setter stores a space-separated language list that is passed to the Collabora (CODE) container; empty is refused and removal goes through the dedicated deleteCollaboraDictionaries() path (delete_collabora_dictionaries form key).

Source

Thrown at php/src/Data/ConfigurationManager.php:1065

            return trim($network);
        }
        return '';
    }

    public function getNextcloudStartupApps() : string {
        $apps = getenv('NEXTCLOUD_STARTUP_APPS');
        if (is_string($apps)) {
            return trim($apps);
        }
        return 'deck twofactor_totp tasks calendar contacts notes';
    }

    /**
     * @throws InvalidSettingConfigurationException
     */
    private function validateCollaboraDictionaries(string $CollaboraDictionaries) : void {
        if ($CollaboraDictionaries === "") {
            throw new InvalidSettingConfigurationException("The dictionaries must not be empty!");
        }

        if (!preg_match("#^[a-zA-Z_ ]+$#", $CollaboraDictionaries)) {
            throw new InvalidSettingConfigurationException("The entered dictionaries do not seem to be a valid!");
        }
    }

    /**
     * Provide an extra method since the corresponding attribute setter prevents setting an empty value.
     */
    public function deleteCollaboraDictionaries() : void {
        $this->set('collabora_dictionaries', '');
    }

    /**
     * @throws InvalidSettingConfigurationException
     */
    private function validateCollaboraAdditionalOptions(string $additionalCollaboraOptions) : void {

View on GitHub (pinned to 6b788eec5e)

Solutions

  1. Send a non-empty space-separated list of dictionary codes, e.g. 'de_DE en_GB es_ES'.
  2. To clear the setting, use the delete_collabora_dictionaries action rather than an empty value.
  3. Omit the key when the dictionaries should remain unchanged.

Example fix

// before
curl -d 'collabora_dictionaries=' https://host/api/webconfig

// after
curl -d 'collabora_dictionaries=de_DE en_GB' https://host/api/webconfig
Defensive patterns

Strategy: validation

Validate before calling

if (trim($collaboraDictionaries) === '') {
    // use the delete action or block the request
}

Prevention

When it happens

Trigger: POSTing the options form with a 'collabora_dictionaries' key whose value is '' or only whitespace is not enough here (no trim before the check, so a whitespace-only string actually passes the empty check and fails the charset regex instead).

Common situations: Automation sending all option keys with defaults; UI select submitting an empty option after an upstream template change.

Related errors


AI-assisted analysis of nextcloud/all-in-one@6b788eec5e (2026-08-21). Data as JSON: /api/errors/4e4a0237a15e4035. Report an issue: GitHub.