nextcloud/all-in-one · warning · InvalidSettingConfigurationException

The timezone must not be empty!

Error message

The timezone must not be empty!

What it means

Thrown by validateTimezone when the timezone string is empty. The validator is called from the timezone attribute setter used when the web form posts a 'timezone' value; an empty string would otherwise clear the setting, so deletion has its own dedicated path (deleteTimezone via the delete_timezone form key).

Source

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

    }

    public function getAdditionalBackupDirectoriesArray() : array {
        $additionalBackupDirectories = $this->getAdditionalBackupDirectoriesString();
        $additionalBackupDirectoriesArray = explode("\n", $additionalBackupDirectories);
        $additionalBackupDirectoriesArray = array_unique($additionalBackupDirectoriesArray, SORT_REGULAR);
        return $additionalBackupDirectoriesArray;
    }

    public function isDailyBackupRunning() : bool {
        return file_exists(DataConst::GetDailyBackupBlockFile());
    }

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

        if (!preg_match("#^[a-zA-Z0-9_\-\/\+]+$#", $timezone)) {
            throw new InvalidSettingConfigurationException("The entered timezone does not seem to be a valid timezone!");
        }
    }

    /**
     * Provide an extra method since our `timezone` attribute setter prevents setting an empty timezone.
     */
    public function deleteTimezone() : void {
        $this->set('timezone', '');
    }

    public function shouldDomainValidationBeSkipped(bool $skipDomainValidation) : bool {
        if ($skipDomainValidation || getenv('SKIP_DOMAIN_VALIDATION') === 'true') {
            return true;
        }

View on GitHub (pinned to 6b788eec5e)

Solutions

  1. Send a real IANA timezone identifier such as 'Europe/Berlin' in the timezone field.
  2. To unset the timezone, POST 'delete_timezone' instead of an empty timezone value.
  3. Omit the timezone key entirely when it should not change.

Example fix

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

// after
curl -d 'timezone=Europe/Berlin' https://host/api/webconfig
// or to remove it:
curl -d 'delete_timezone=1' https://host/api/webconfig
Defensive patterns

Strategy: validation

Validate before calling

if ($timezone === '') {
    // use delete_timezone action instead of posting an empty value
}

Prevention

When it happens

Trigger: POSTing the web configuration form with 'timezone' present but '' instead of using the separate delete_timezone action.

Common situations: Automation that includes every form key with empty defaults; a timezone picker that submits an empty value when the browser blocks its assets.

Related errors


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