Whoops, looks like something went wrong.

Get help in the TYPO3 Documentation

If you need help solving this exception, you can have a look at the TYPO3 Documentation. There you can find solutions provided by the TYPO3 community. Once you have found a solution to the problem, help others by contributing to the documentation page.

Find a solution for this exception in the TYPO3 Documentation.

(1/1) #1294587212 RuntimeException

Page shortcuts were looping in uids 34,34...!

in /web/public/typo3/sysext/frontend/Classes/Page/PageRepository.php line 1161
            } else {
                $pageLog[] = $page['uid'];
                $message = 'Page shortcuts were looping in uids ' . implode(',', $pageLog) . '...!';
                $this->logger->error($message);
                throw new \RuntimeException($message, 1294587212);
            }
        }
        // Return resulting page:
        return $page;
at TYPO3\CMS\Frontend\Page\PageRepository->getPageShortcut(34, 0, 34, 19, array(34, 34), false)
in /web/public/typo3/sysext/frontend/Classes/Page/PageRepository.php line 1156
        // Check if short cut page was a shortcut itself, if so look up recursively:
        if ($page['doktype'] == self::DOKTYPE_SHORTCUT) {
            if (!in_array($page['uid'], $pageLog) && $iteration > 0) {
                $pageLog[] = $page['uid'];
                $page = $this->getPageShortcut($page['shortcut'], $page['shortcut_mode'], $page['uid'], $iteration - 1, $pageLog, $disableGroupCheck);
            } else {
                $pageLog[] = $page['uid'];
                $message = 'Page shortcuts were looping in uids ' . implode(',', $pageLog) . '...!';
                $this->logger->error($message);
at TYPO3\CMS\Frontend\Page\PageRepository->getPageShortcut(34, 0, 34)
in /web/public/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php line 1626
            // about languages - whether we took the correct shortcut or
            // whether a translation of the page overwrites the shortcut
            // target and we need to follow the new target
            $this->originalShortcutPage = $this->page;
            $this->page = $this->sys_page->getPageShortcut($this->page['shortcut'], $this->page['shortcut_mode'], $this->page['uid']);
            $this->id = $this->page['uid'];
        }
        // If the page is a mountpoint which should be overlaid with the contents of the mounted page,
        // it must never be accessible directly, but only in the mountpoint context. Therefore we change
at TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->getPageAndRootline()
in /web/public/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php line 1962
     * @internal
     */
    public function getPageAndRootlineWithDomain($domainStartPage)
    {
        $this->getPageAndRootline();
        // Checks if the $domain-startpage is in the rootLine. This is necessary so that references to page-id's from other domains are not possible.
        if ($domainStartPage && is_array($this->rootLine) && $this->rootLine !== []) {
            $idFound = false;
            foreach ($this->rootLine as $key => $val) {
at TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->getPageAndRootlineWithDomain(1)
in /web/public/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php line 1455
        $timeTracker->push('fetch_the_id rootLine/');
        // We store the originally requested id
        $this->requestedId = $this->id;
        try {
            $this->getPageAndRootlineWithDomain($this->domainStartPage);
        } catch (ShortcutTargetPageNotFoundException $e) {
            $this->pageNotFound = 1;
        }
        $timeTracker->pull();
at TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->fetch_the_id()
in /web/public/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php line 1203
        if ($isPreview) {
            $this->disableCache();
        }
        // Now, get the id, validate access etc:
        $this->fetch_the_id();
        // Check if backend user has read access to this page. If not, recalculate the id.
        if ($this->isBackendUserLoggedIn() && $isPreview && !$this->getBackendUser()->doesUserHaveAccess($this->page, Permission::PAGE_SHOW)) {
            // Resetting
            $this->clear_preview();
at TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->determineId()
in /web/public/typo3/sysext/frontend/Classes/Middleware/PageResolver.php line 158
                $this->checkAlternativeIdMethods($this->controller);
            }
        }

        $this->controller->determineId();

        // No access? Then remove user & Re-evaluate the page-id
        if ($this->controller->isBackendUserLoggedIn() && !$GLOBALS['BE_USER']->doesUserHaveAccess($this->controller->page, Permission::PAGE_SHOW)) {
            unset($GLOBALS['BE_USER']);
at TYPO3\CMS\Frontend\Middleware\PageResolver->process(object(TYPO3\CMS\Core\Http\ServerRequest), object(class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104))
in /web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php line 138

                if (!$middleware instanceof MiddlewareInterface) {
                    throw new \InvalidArgumentException(get_class($middleware) . ' does not implement ' . MiddlewareInterface::class, 1516821342);
                }
                return $middleware->process($request, $this->next);
            }
        };
    }
}
at class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/frontend/Classes/Middleware/PreviewSimulator.php line 62
            $showHiddenRecords = ($this->context->hasAspect('visibility') ? $this->context->getAspect('visibility')->includeHidden() : false);
            $GLOBALS['TSFE']->fePreview = ($simulatingDate || $simulatingGroup || $showHiddenRecords);
        }

        return $handler->handle($request);
    }

    /**
     * Simulate dates for preview functionality
at TYPO3\CMS\Frontend\Middleware\PreviewSimulator->process(object(TYPO3\CMS\Core\Http\ServerRequest), object(class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104))
in /web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php line 138

                if (!$middleware instanceof MiddlewareInterface) {
                    throw new \InvalidArgumentException(get_class($middleware) . ' does not implement ' . MiddlewareInterface::class, 1516821342);
                }
                return $middleware->process($request, $this->next);
            }
        };
    }
}
at class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/redirects/Classes/Http/Middleware/RedirectHandler.php line 70
                return $response;
            }
        }

        return $handler->handle($request);
    }

    /**
     * Creates a PSR-7 compatible Response object
at TYPO3\CMS\Redirects\Http\Middleware\RedirectHandler->process(object(TYPO3\CMS\Core\Http\ServerRequest), object(class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104))
in /web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php line 138

                if (!$middleware instanceof MiddlewareInterface) {
                    throw new \InvalidArgumentException(get_class($middleware) . ' does not implement ' . MiddlewareInterface::class, 1516821342);
                }
                return $middleware->process($request, $this->next);
            }
        };
    }
}
at class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/frontend/Classes/Middleware/StaticRouteResolver.php line 62

                return new HtmlResponse($content, 200, ['Content-Type' => $contentType]);
            }
        }
        return $handler->handle($request);
    }

    /**
     * Find the proper configuration for the static route in the static route configuration. Mainly:
at TYPO3\CMS\Frontend\Middleware\StaticRouteResolver->process(object(TYPO3\CMS\Core\Http\ServerRequest), object(class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104))
in /web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php line 138

                if (!$middleware instanceof MiddlewareInterface) {
                    throw new \InvalidArgumentException(get_class($middleware) . ' does not implement ' . MiddlewareInterface::class, 1516821342);
                }
                return $middleware->process($request, $this->next);
            }
        };
    }
}
at class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/frontend/Classes/Middleware/SiteBaseRedirectResolver.php line 86
                $uri = $requestedUri->withPath(rtrim($requestedUri->getPath(), '/'));
                return new RedirectResponse($uri, 307);
            }
        }
        return $handler->handle($request);
    }
    /**
     * Checks if the language is allowed in Frontend, if not, check if there is valid BE user
     *
at TYPO3\CMS\Frontend\Middleware\SiteBaseRedirectResolver->process(object(TYPO3\CMS\Core\Http\ServerRequest), object(class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104))
in /web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php line 138

                if (!$middleware instanceof MiddlewareInterface) {
                    throw new \InvalidArgumentException(get_class($middleware) . ' does not implement ' . MiddlewareInterface::class, 1516821342);
                }
                return $middleware->process($request, $this->next);
            }
        };
    }
}
at class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/frontend/Classes/Middleware/SiteResolver.php line 68
        // At this point, we later get further route modifiers
        // for bw-compat we update $GLOBALS[TYPO3_REQUEST] to be used later in TSFE.
        $GLOBALS['TYPO3_REQUEST'] = $request;

        return $handler->handle($request);
    }
}
at TYPO3\CMS\Frontend\Middleware\SiteResolver->process(object(TYPO3\CMS\Core\Http\ServerRequest), object(class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104))
in /web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php line 138

                if (!$middleware instanceof MiddlewareInterface) {
                    throw new \InvalidArgumentException(get_class($middleware) . ' does not implement ' . MiddlewareInterface::class, 1516821342);
                }
                return $middleware->process($request, $this->next);
            }
        };
    }
}
at class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/frontend/Classes/Middleware/BackendUserAuthenticator.php line 95
            Bootstrap::loadExtTables();
            $this->setBackendUserAspect(GeneralUtility::makeInstance(Context::class), $GLOBALS['BE_USER']);
        }

        return $handler->handle($request);
    }

    /**
     * Creates the backend user object and returns it.
at TYPO3\CMS\Frontend\Middleware\BackendUserAuthenticator->process(object(TYPO3\CMS\Core\Http\ServerRequest), object(class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104))
in /web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php line 138

                if (!$middleware instanceof MiddlewareInterface) {
                    throw new \InvalidArgumentException(get_class($middleware) . ' does not implement ' . MiddlewareInterface::class, 1516821342);
                }
                return $middleware->process($request, $this->next);
            }
        };
    }
}
at class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/frontend/Classes/Middleware/FrontendUserAuthenticator.php line 79

        // Register the frontend user as aspect
        $this->setFrontendUserAspect(GeneralUtility::makeInstance(Context::class), $frontendUser);

        return $handler->handle($request);
    }

    /**
     * It's possible to transfer a frontend user session via a GET/POST parameter 'FE_SESSION_KEY'.
at TYPO3\CMS\Frontend\Middleware\FrontendUserAuthenticator->process(object(TYPO3\CMS\Core\Http\ServerRequest), object(class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104))
in /web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php line 138

                if (!$middleware instanceof MiddlewareInterface) {
                    throw new \InvalidArgumentException(get_class($middleware) . ' does not implement ' . MiddlewareInterface::class, 1516821342);
                }
                return $middleware->process($request, $this->next);
            }
        };
    }
}
at class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/frontend/Classes/Middleware/TypoScriptFrontendInitialization.php line 90
                GeneralUtility::callUserFunction($_funcRef, $_params, $GLOBALS['TSFE']);
            }
        }

        return $handler->handle($request);
    }
}
at TYPO3\CMS\Frontend\Middleware\TypoScriptFrontendInitialization->process(object(TYPO3\CMS\Core\Http\ServerRequest), object(class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104))
in /web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php line 138

                if (!$middleware instanceof MiddlewareInterface) {
                    throw new \InvalidArgumentException(get_class($middleware) . ' does not implement ' . MiddlewareInterface::class, 1516821342);
                }
                return $middleware->process($request, $this->next);
            }
        };
    }
}
at class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/frontend/Classes/Middleware/EidHandler.php line 50
    {
        $eID = $request->getParsedBody()['eID'] ?? $request->getQueryParams()['eID'] ?? null;

        if ($eID === null) {
            return $handler->handle($request);
        }

        // Remove any output produced until now
        ob_clean();
at TYPO3\CMS\Frontend\Middleware\EidHandler->process(object(TYPO3\CMS\Core\Http\ServerRequest), object(class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104))
in /web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php line 138

                if (!$middleware instanceof MiddlewareInterface) {
                    throw new \InvalidArgumentException(get_class($middleware) . ' does not implement ' . MiddlewareInterface::class, 1516821342);
                }
                return $middleware->process($request, $this->next);
            }
        };
    }
}
at class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/frontend/Classes/Middleware/PreprocessRequestHook.php line 57
                $hookParameters = [];
                GeneralUtility::callUserFunction($hookFunction, $hookParameters, $hookParameters);
            }
        }
        return $handler->handle($request);
    }
}
at TYPO3\CMS\Frontend\Middleware\PreprocessRequestHook->process(object(TYPO3\CMS\Core\Http\ServerRequest), object(class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104))
in /web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php line 138

                if (!$middleware instanceof MiddlewareInterface) {
                    throw new \InvalidArgumentException(get_class($middleware) . ' does not implement ' . MiddlewareInterface::class, 1516821342);
                }
                return $middleware->process($request, $this->next);
            }
        };
    }
}
at class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/core/Classes/Middleware/NormalizedParamsAttribute.php line 58
        // refactored to have ServerRequest object available where it is needed. This global will be
        // deprecated then and removed.
        $GLOBALS['TYPO3_REQUEST'] = $request;

        return $handler->handle($request);
    }
}
at TYPO3\CMS\Core\Middleware\NormalizedParamsAttribute->process(object(TYPO3\CMS\Core\Http\ServerRequest), object(class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104))
in /web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php line 138

                if (!$middleware instanceof MiddlewareInterface) {
                    throw new \InvalidArgumentException(get_class($middleware) . ' does not implement ' . MiddlewareInterface::class, 1516821342);
                }
                return $middleware->process($request, $this->next);
            }
        };
    }
}
at class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/frontend/Classes/Middleware/TimeTrackerInitialization.php line 49
        );
        $timeTracker->start();
        $timeTracker->push('');

        return $handler->handle($request);
    }
}
at TYPO3\CMS\Frontend\Middleware\TimeTrackerInitialization->process(object(TYPO3\CMS\Core\Http\ServerRequest), object(class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104))
in /web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php line 138

                if (!$middleware instanceof MiddlewareInterface) {
                    throw new \InvalidArgumentException(get_class($middleware) . ' does not implement ' . MiddlewareInterface::class, 1516821342);
                }
                return $middleware->process($request, $this->next);
            }
        };
    }
}
at class@anonymous/web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php:121$104->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php line 67
     * @return ResponseInterface
     */
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        return $this->tip->handle($request);
    }

    /**
     * Seed the middleware stack with the inner request handler
at TYPO3\CMS\Core\Http\MiddlewareDispatcher->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/core/Classes/Http/AbstractApplication.php line 108
    {
        $requestHandler = GeneralUtility::makeInstance($this->requestHandler);
        $dispatcher = $this->createMiddlewareDispatcher($requestHandler);

        return $dispatcher->handle($request);
    }

    /**
     * Set up the application and shut it down afterwards
at TYPO3\CMS\Core\Http\AbstractApplication->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/frontend/Classes/Http/Application.php line 69
        if (!$this->checkIfEssentialConfigurationExists()) {
            return $this->installToolRedirect();
        }
        $this->initializeContext();
        return parent::handle($request);
    }

    /**
     * Check if LocalConfiguration.php and PackageStates.php exist
at TYPO3\CMS\Frontend\Http\Application->handle(object(TYPO3\CMS\Core\Http\ServerRequest))
in /web/public/typo3/sysext/core/Classes/Http/AbstractApplication.php line 120
    final public function run(callable $execute = null)
    {
        try {
            $response = $this->handle(
                \TYPO3\CMS\Core\Http\ServerRequestFactory::fromGlobals()
            );
            if ($execute !== null) {
                call_user_func($execute);
            }
at TYPO3\CMS\Core\Http\AbstractApplication->run()
in /web/public/index.php line 24
// Set up the application for the frontend
call_user_func(function () {
    $classLoader = require dirname(__DIR__).'/vendor/autoload.php';
    \TYPO3\CMS\Core\Core\SystemEnvironmentBuilder::run(0, \TYPO3\CMS\Core\Core\SystemEnvironmentBuilder::REQUESTTYPE_FE);
    \TYPO3\CMS\Core\Core\Bootstrap::init($classLoader)->get(\TYPO3\CMS\Frontend\Http\Application::class)->run();
});
at {closure}()
in /web/public/index.php line 25
call_user_func(function () {
    $classLoader = require dirname(__DIR__).'/vendor/autoload.php';
    \TYPO3\CMS\Core\Core\SystemEnvironmentBuilder::run(0, \TYPO3\CMS\Core\Core\SystemEnvironmentBuilder::REQUESTTYPE_FE);
    \TYPO3\CMS\Core\Core\Bootstrap::init($classLoader)->get(\TYPO3\CMS\Frontend\Http\Application::class)->run();
});