getgrav/grav · error · RuntimeException
Page has no path
Error message
Page has no path
What it means
Error "Page has no path" thrown in getgrav/grav.
Source
Thrown at system/src/Grav/Common/Flex/Types/Pages/Storage/PageStorage.php:382
* $row['__META']['copy'] = true Use this if you want to copy the whole folder, otherwise it will be moved
* $row['__META']['clone'] = true Use this if you want to clone the file, otherwise it will be renamed
*
* @param string $key
* @param array $row
* @return array
*/
protected function saveRow(string $key, array $row): array
{
// Initialize all key-related variables.
$newKeys = $this->extractKeysFromRow($row);
$newKey = $this->buildStorageKey($newKeys);
$newFolder = $this->buildFolder($newKeys);
$newFilename = $this->buildFilename($newKeys);
$newFilepath = rtrim($newFolder, '/') !== $newFolder ? $newFolder . $newFilename : $newFolder . '/' . $newFilename;
try {
if ($key === '' && empty($row['root'])) {
throw new RuntimeException('Page has no path');
}
$grav = Grav::instance();
/** @var Debugger $debugger */
$debugger = $grav['debugger'];
$debugger->addMessage("Save page: {$newKey}", 'debug');
// Check if the row already exists.
$oldKey = $row['__META']['storage_key'] ?? null;
if (is_string($oldKey)) {
// Initialize all old key-related variables.
$oldKeys = $this->extractKeysFromRow(['__META' => $row['__META']], false);
$oldFolder = $this->buildFolder($oldKeys);
$oldFilename = $this->buildFilename($oldKeys);
// Check if folder has changed.
if ($oldFolder !== $newFolder && file_exists($oldFolder)) {View on GitHub (pinned to 6040efed04)
When it happens
Trigger: Thrown at system/src/Grav/Common/Flex/Types/Pages/Storage/PageStorage.php:382 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/a5e2ce18dd47d080.
Report an issue: GitHub.