ErrorException (E_WARNING)
Undefined array key "clang" ErrorException thrown with message "Undefined array key "clang"" Stacktrace: #9 ErrorException in /var/www/konzept21.com/html/redaxo/src/addons/yrewrite/lib/yrewrite/yrewrite.php:222 #8 rex_error_handler:handleError in /var/www/konzept21.com/html/redaxo/src/addons/yrewrite/lib/yrewrite/yrewrite.php:222 #7 rex_yrewrite:prepare in /var/www/konzept21.com/html/redaxo/src/addons/yrewrite/boot.php:110 #6 rex_package:{closure} in /var/www/konzept21.com/html/redaxo/src/core/lib/extension.php:52 #5 rex_extension:{closure} in /var/www/konzept21.com/html/redaxo/src/core/lib/util/timer.php:62 #4 rex_timer:measure in /var/www/konzept21.com/html/redaxo/src/core/lib/extension.php:42 #3 rex_extension:registerPoint in /var/www/konzept21.com/html/redaxo/src/core/packages.php:31 #2 include_once in /var/www/konzept21.com/html/redaxo/src/core/frontend.php:12 #1 require in /var/www/konzept21.com/html/redaxo/src/core/boot.php:155 #0 require in /var/www/konzept21.com/html/index.php:9
Stack frames (10)
9
ErrorException
/redaxo/src/addons/yrewrite/lib/yrewrite/yrewrite.php222
8
rex_error_handler handleError
/redaxo/src/addons/yrewrite/lib/yrewrite/yrewrite.php222
7
rex_yrewrite prepare
/redaxo/src/addons/yrewrite/boot.php110
6
rex_package {closure}
/redaxo/src/core/lib/extension.php52
5
rex_extension {closure}
/redaxo/src/core/lib/util/timer.php62
4
rex_timer measure
/redaxo/src/core/lib/extension.php42
3
rex_extension registerPoint
/redaxo/src/core/packages.php31
2
include_once
/redaxo/src/core/frontend.php12
1
require
/redaxo/src/core/boot.php155
0
require
/index.php9
/var/www/konzept21.com/html/redaxo/src/addons/yrewrite/lib/yrewrite/yrewrite.php
        return isset(self::$domainsByMountId[$aid][$clang]);
    }
 
    public static function isInCurrentDomain($aid)
    {
        return (self::getDomainByArticleId($aid)->getName() == self::getCurrentDomain()->getName()) ? true : false;
    }
 
    // ----- url
 
    public static function getPathsByDomain($domain)
    {
        return self::$paths['paths'][$domain];
    }
 
    public static function prepare()
    {
        if (rex::isFrontend() && 'get' === rex_request_method() && !rex_get('rex-api-call') && $articleId = rex_get('article_id', 'int')) {
            $params = $_GET;
            $article = rex_article::get((int) $params['article_id'], (int) $params['clang']);
            if ($article instanceof rex_article) {
                unset($params['article_id']);
                unset($params['clang']);
                $url = self::getFullUrlByArticleId($articleId, null, $params, '&');
                rex_response::sendRedirect($url, rex_response::HTTP_MOVED_PERMANENTLY);
            }
        }
 
        if ($articleId = rex_request('article_id', 'int')) {
            $url = rex_getUrl($articleId);
        } else {
            if (!isset($_SERVER['REQUEST_URI'])) {
                $_SERVER['REQUEST_URI'] = substr($_SERVER['PHP_SELF'], 1);
                if (!empty($_SERVER['QUERY_STRING'])) {
                    $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
                }
            }
 
            $url = urldecode($_SERVER['REQUEST_URI']);
        }
Arguments
  1. "Undefined array key "clang""
    
/var/www/konzept21.com/html/redaxo/src/addons/yrewrite/lib/yrewrite/yrewrite.php
        return isset(self::$domainsByMountId[$aid][$clang]);
    }
 
    public static function isInCurrentDomain($aid)
    {
        return (self::getDomainByArticleId($aid)->getName() == self::getCurrentDomain()->getName()) ? true : false;
    }
 
    // ----- url
 
    public static function getPathsByDomain($domain)
    {
        return self::$paths['paths'][$domain];
    }
 
    public static function prepare()
    {
        if (rex::isFrontend() && 'get' === rex_request_method() && !rex_get('rex-api-call') && $articleId = rex_get('article_id', 'int')) {
            $params = $_GET;
            $article = rex_article::get((int) $params['article_id'], (int) $params['clang']);
            if ($article instanceof rex_article) {
                unset($params['article_id']);
                unset($params['clang']);
                $url = self::getFullUrlByArticleId($articleId, null, $params, '&');
                rex_response::sendRedirect($url, rex_response::HTTP_MOVED_PERMANENTLY);
            }
        }
 
        if ($articleId = rex_request('article_id', 'int')) {
            $url = rex_getUrl($articleId);
        } else {
            if (!isset($_SERVER['REQUEST_URI'])) {
                $_SERVER['REQUEST_URI'] = substr($_SERVER['PHP_SELF'], 1);
                if (!empty($_SERVER['QUERY_STRING'])) {
                    $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
                }
            }
 
            $url = urldecode($_SERVER['REQUEST_URI']);
        }
/var/www/konzept21.com/html/redaxo/src/addons/yrewrite/boot.php
                $sql->next();
            }
 
            return $warning;
        });
    }
 
    // rex_extension::register('ALL_GENERATED', 'rex_yrewrite::init');
    rex_extension::register('URL_REWRITE', static function (rex_extension_point $ep) {
        $params = $ep->getParams();
        $params['subject'] = $ep->getSubject();
        return rex_yrewrite::rewrite($params);
    });
 
    rex_extension::register('MEDIA_MANAGER_URL', static function (rex_extension_point $ep) {
        return rex_yrewrite::rewriteMedia($ep->getParams());
    });
 
    if ('cli' !== PHP_SAPI) {
        rex_yrewrite::prepare();
    }
 
    if (rex::isBackend()) {
        if (!$this->getConfig('yrewrite_hide_url_block') && rex::getUser() instanceof rex_user && rex::getUser()->hasPerm('yrewrite[url]')) {
            rex_extension::register('STRUCTURE_CONTENT_SIDEBAR', function (rex_extension_point $ep) {
                $params = $ep->getParams();
                $subject = $ep->getSubject();
 
                $panel = include rex_path::addon('yrewrite', 'pages/content.yrewrite_url.php');
 
                $fragment = new rex_fragment();
                $fragment->setVar('title', '<i class="rex-icon rex-icon-info"></i> '.rex_i18n::msg('yrewrite_rewriter'), false);
                $fragment->setVar('body', $panel, false);
                $fragment->setVar('article_id', $params['article_id'], false);
 
                $fragment->setVar('collapse', true);
                $fragment->setVar('collapsed', false);
                $content = $fragment->parse('core/page/section.php');
 
                return $subject.$content;
/var/www/konzept21.com/html/redaxo/src/core/lib/extension.php
     */
    public static function registerPoint(rex_extension_point $extensionPoint)
    {
        if ($factoryClass = static::getExplicitFactoryClass()) {
            return $factoryClass::registerPoint($extensionPoint);
        }
 
        $name = $extensionPoint->getName();
 
        rex_timer::measure('EP: '.$name, static function () use ($extensionPoint, $name) {
            foreach ([self::EARLY, self::NORMAL, self::LATE] as $level) {
                if (!isset(self::$extensions[$name][$level]) || !is_array(self::$extensions[$name][$level])) {
                    continue;
                }
 
                foreach (self::$extensions[$name][$level] as $extensionAndParams) {
                    [$extension, $params] = $extensionAndParams;
                    $extensionPoint->setExtensionParams($params);
                    /** @var T|null $subject */
                    $subject = call_user_func($extension, $extensionPoint);
                    // Update subject only if the EP is not readonly and the extension has returned something
                    if ($extensionPoint->isReadonly()) {
                        continue;
                    }
                    if (null === $subject) {
                        continue;
                    }
                    $extensionPoint->setSubject($subject);
                }
            }
        });
 
        return $extensionPoint->getSubject();
    }
 
    /**
     * Registers an extension for an extension point.
     *
     * @template T as rex_extension_point
     * @param string|string[] $extensionPoint Name(s) of extension point(s)
/var/www/konzept21.com/html/redaxo/src/core/lib/util/timer.php
     *
     * On sufficient user permissions - or in debug mode - this timings will be sent over the wire to the browser via server timing api http headers.
     *
     * @template T
     *
     * @param string $label
     * @param callable():T $callable
     *
     * @return T result of callable
     */
    public static function measure($label, callable $callable)
    {
        if (!rex::isDebugMode()) {
            return $callable();
        }
 
        $timer = new self();
 
        try {
            return $callable();
        } finally {
            $timer->stop();
 
            self::measured($label, $timer);
        }
    }
 
    /**
     * Saves the measurement of the given timer.
     *
     * This method should be used only if the measured code can not be wrapped inside a callable, otherwise use `measure()`.
     */
    public static function measured(string $label, self $timer): void
    {
        $duration = self::$serverTimings[$label]['sum'] ?? 0;
        $duration += $timer->getDelta(self::MILLISEC);
 
        self::$serverTimings[$label]['sum'] = $duration;
        self::$serverTimings[$label]['timings'][] = [
            'start' => $timer->start,
/var/www/konzept21.com/html/redaxo/src/core/lib/extension.php
    private static $extensions = [];
 
    /**
     * Registers an extension point.
     *
     * @template T
     * @param rex_extension_point<T> $extensionPoint Extension point
     * @return T Subject, maybe adjusted by the extensions
     *
     * @psalm-taint-specialize
     */
    public static function registerPoint(rex_extension_point $extensionPoint)
    {
        if ($factoryClass = static::getExplicitFactoryClass()) {
            return $factoryClass::registerPoint($extensionPoint);
        }
 
        $name = $extensionPoint->getName();
 
        rex_timer::measure('EP: '.$name, static function () use ($extensionPoint, $name) {
            foreach ([self::EARLY, self::NORMAL, self::LATE] as $level) {
                if (!isset(self::$extensions[$name][$level]) || !is_array(self::$extensions[$name][$level])) {
                    continue;
                }
 
                foreach (self::$extensions[$name][$level] as $extensionAndParams) {
                    [$extension, $params] = $extensionAndParams;
                    $extensionPoint->setExtensionParams($params);
                    /** @var T|null $subject */
                    $subject = call_user_func($extension, $extensionPoint);
                    // Update subject only if the EP is not readonly and the extension has returned something
                    if ($extensionPoint->isReadonly()) {
                        continue;
                    }
                    if (null === $subject) {
                        continue;
                    }
                    $extensionPoint->setSubject($subject);
                }
            }
/var/www/konzept21.com/html/redaxo/src/core/packages.php
    $packageOrder = rex::getPackageOrder();
}
 
// in the first run, we register all folders for class- and fragment-loading,
// so it is transparent in which order the addons are included afterwards.
foreach ($packageOrder as $packageId) {
    rex_package::require($packageId)->enlist();
}
 
// now we actually include the addons logic
rex_timer::measure('packages_boot', static function () use ($packageOrder) {
    foreach ($packageOrder as $packageId) {
        rex_timer::measure('package_boot: '.$packageId, static function () use ($packageId) {
            rex_package::require($packageId)->boot();
        });
    }
});
 
// ----- all addons configs included
rex_extension::registerPoint(new rex_extension_point('PACKAGES_INCLUDED'));
 
/var/www/konzept21.com/html/redaxo/src/core/frontend.php
<?php
 
if (rex::isSetup()) {
    rex_response::sendRedirect(rex_url::backendController());
}
 
if (rex::isDebugMode()) {
    header('X-Robots-Tag: noindex, nofollow, noarchive');
}
 
// ----- INCLUDE ADDONS
include_once rex_path::core('packages.php');
 
// ----- caching end für output filter
$CONTENT = ob_get_clean();
 
// trigger api functions. the api function is responsible for checking permissions.
rex_api_function::handleCall();
 
if (rex_extension::isRegistered('FE_OUTPUT')) {
    // ----- EXTENSION POINT
    rex_extension::registerPoint(new rex_extension_point('FE_OUTPUT', $CONTENT));
} else {
    // ----- inhalt ausgeben
    rex_response::sendPage($CONTENT);
}
 
Arguments
  1. "/var/www/konzept21.com/html/redaxo/src/core/packages.php"
    
/var/www/konzept21.com/html/redaxo/src/core/boot.php
        rex_clang::setCurrentId($clangId);
    }
}
 
// ----------------- HTTPS REDIRECT
if ('cli' !== PHP_SAPI && !rex::isSetup()) {
    if ((true === rex::getProperty('use_https') || rex::getEnvironment() === rex::getProperty('use_https')) && !rex_request::isHttps()) {
        rex_response::enforceHttps();
    }
 
    if (true === rex::getProperty('use_hsts') && rex_request::isHttps()) {
        rex_response::setHeader('Strict-Transport-Security', 'max-age='.(int) rex::getProperty('hsts_max_age', 31536000)); // default 1 year
    }
}
 
rex_extension::register('SESSION_REGENERATED', [rex_backend_login::class, 'sessionRegenerated']);
 
if (isset($REX['LOAD_PAGE']) && $REX['LOAD_PAGE']) {
    unset($REX);
    require rex_path::core(rex::isBackend() ? 'backend.php' : 'frontend.php');
}
 
Arguments
  1. "/var/www/konzept21.com/html/redaxo/src/core/frontend.php"
    
/var/www/konzept21.com/html/index.php
<?php
 
unset($REX);
$REX['REDAXO'] = false;
$REX['HTDOCS_PATH'] = './';
$REX['BACKEND_FOLDER'] = 'redaxo';
$REX['LOAD_PAGE'] = true;
 
require $REX['BACKEND_FOLDER'] . '/src/core/boot.php';
 
Arguments
  1. "/var/www/konzept21.com/html/redaxo/src/core/boot.php"
    

Environment & details:

Key Value
article_id
"10"
empty
empty
empty
empty
Key Value
USER
"www-data"
HOME
"/var/www"
HTTP_CF_CONNECTING_IP
"54.163.62.42"
HTTP_CF_VISITOR
"{"scheme":"https"}"
HTTP_X_FORWARDED_PROTO
"https"
HTTP_CF_RAY
"86ba3581a8c05af8-IAD"
HTTP_CF_IPCOUNTRY
"US"
HTTP_CDN_LOOP
"cloudflare"
HTTP_X_FORWARDED_FOR
"54.163.62.42"
HTTP_USER_AGENT
"claudebot"
HTTP_REFERER
"http://konzept21.com/8-0-Betreutes-Wohnen.html?article_id=10"
HTTP_HOST
"konzept21.com"
HTTP_ACCEPT_ENCODING
"gzip, br"
HTTP_ACCEPT
"*/*"
X-LSCACHE
"on,crawler"
LSWS_EDITION
"Openlitespeed 1.7.15"
SSL_CIPHER_ALGKEYSIZE
"128"
SSL_CIPHER_USEKEYSIZE
"128"
SSL_CIPHER
"TLS_AES_128_GCM_SHA256"
SSL_PROTOCOL
"TLSv1.3"
X_SPDY
"HTTP2"
REDIRECT_STATUS
"200"
HTTPS
"on"
PROXY_REMOTE_ADDR
"172.70.35.87"
REDIRECT_QUERY_STRING
"article_id=10"
REDIRECT_URL
"/8-0-Betreutes-Wohnen.html"
REQUEST_URI
"/8-0-Betreutes-Wohnen.html?article_id=10"
SERVER_PORT
"443"
SERVER_ADMIN
"[email protected]"
SERVER_NAME
"konzept21.com"
SERVER_ADDR
"84.38.65.74"
REMOTE_PORT
"60416"
REMOTE_ADDR
"54.163.62.42"
DOCUMENT_ROOT
"/var/www/konzept21.com/html"
SCRIPT_NAME
"/index.php"
QUERY_STRING
"article_id=10"
SCRIPT_FILENAME
"/var/www/konzept21.com/html/index.php"
REQUEST_METHOD
"GET"
SERVER_PROTOCOL
"HTTP/1.1"
SERVER_SOFTWARE
"LiteSpeed"
GATEWAY_INTERFACE
"CGI/1.1"
FCGI_ROLE
"RESPONDER"
PHP_SELF
"/index.php"
REQUEST_TIME_FLOAT
1711656102.1235
REQUEST_TIME
1711656102
empty
0. Whoops\Handler\PrettyPageHandler
Report a REDAXO bug