getgrav/grav · error · RuntimeException

Cannot copy object: key '{$dst}' is already taken

Error message

Cannot copy object: key '{$dst}' is already taken

What it means

Error "Cannot copy object: key '{$dst}' is already taken" thrown in getgrav/grav.

Source

Thrown at system/src/Grav/Framework/Flex/Storage/FileStorage.php:63

    public function getMediaPath(?string $key = null): ?string
    {
        $path = $this->getStoragePath();
        if (!$path) {
            return null;
        }

        return $key ? "{$path}/{$key}" : $path;
    }

    /**
     * @param string $src
     * @param string $dst
     * @return bool
     */
    public function copyRow(string $src, string $dst): bool
    {
        if ($this->hasKey($dst)) {
            throw new RuntimeException("Cannot copy object: key '{$dst}' is already taken");
        }

        if (!$this->hasKey($src)) {
            return false;
        }

        return true;
    }

    /**
     * {@inheritdoc}
     * @see FlexStorageInterface::renameRow()
     */
    public function renameRow(string $src, string $dst): bool
    {
        if (!$this->hasKey($src)) {
            return false;
        }

View on GitHub (pinned to 6040efed04)

When it happens

Trigger: Thrown at system/src/Grav/Framework/Flex/Storage/FileStorage.php:63 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of getgrav/grav@6040efed04 (2026-08-17). Data as JSON: /api/errors/30fbacdaf4d0bad9. Report an issue: GitHub.