nextcloud/all-in-one · warning · InvalidSettingConfigurationException

The daily backup time must not be empty!

Error message

The daily backup time must not be empty!

What it means

Thrown by ConfigurationManager::setDailyBackupTime when the time string is empty. The method is invoked from the web UI form (daily_backup_time field) and writes the chosen time plus flags for automatic updates and success notifications into the daily backup time file; an empty value would disable the schedule silently, so it is rejected.

Source

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

        }

        return trim((string)file_get_contents(DataConst::GetBackupPublicKey()));
    }

    public function getCollaboraSeccompPolicy() : string {
        $defaultString = '--o:security.seccomp=';
        if (!$this->collaboraSeccompDisabled) {
            return $defaultString . 'true';
        }
        return $defaultString . 'false';
    }

    /**
     * @throws InvalidSettingConfigurationException
     */
    public function setDailyBackupTime(string $time, bool $enableAutomaticUpdates, bool $successNotification) : void {
        if ($time === "") {
            throw new InvalidSettingConfigurationException("The daily backup time must not be empty!");
        }

        if (!preg_match("#^[0-1][0-9]:[0-5][0-9]$#", $time) && !preg_match("#^2[0-3]:[0-5][0-9]$#", $time)) {
            throw new InvalidSettingConfigurationException("You did not enter a correct time! One correct example is '04:00'!");
        }

        if ($enableAutomaticUpdates === false) {
            $time .= PHP_EOL . 'automaticUpdatesAreNotEnabled';
        } else {
            $time .= PHP_EOL;
        }
        if ($successNotification === false) {
            $time .= PHP_EOL . 'successNotificationsAreNotEnabled';
        } else {
            $time .= PHP_EOL;
        }
        file_put_contents(DataConst::GetDailyBackupTimeFile(), $time);
        $this->dailyBackupFileCache = '';

View on GitHub (pinned to 6b788eec5e)

Solutions

  1. Send a valid HH:MM string such as '04:00' in the daily_backup_time field.
  2. Use the dedicated delete path (delete_daily_backup_time) when the intent is to remove the schedule instead of setting it.
  3. Ensure your client is not sending the key with an empty value when you do not intend to change the backup time.

Example fix

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

// after
curl -d 'daily_backup_time=04:00' https://host/api/webconfig
Defensive patterns

Strategy: validation

Validate before calling

if ($dailyBackupTime === '') {
    // use delete_daily_backup_time action or block the request
}

Prevention

When it happens

Trigger: POST to the web configuration endpoint with 'daily_backup_time' present but '' (the controller only routes the field into setDailyBackupTime when the key exists in the parsed body).

Common situations: Curl/automation omitting the time value while sending the key; a cleared input still being serialized by the form; JS sending the empty string after the picker failed to initialize.

Related errors


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