Whoops \ Exception \ ErrorException (E_WARNING)
Cannot modify header information - headers already sent by (output started at /usr/www/users/gmurgi/kirby/site/tags/box.php:19) Whoops\Exception\ErrorException thrown with message "Cannot modify header information - headers already sent by (output started at /usr/www/users/gmurgi/kirby/site/tags/box.php:19)" Stacktrace: #8 Whoops\Exception\ErrorException in /usr/www/users/gmurgi/kirby/kirby/vendor/getkirby/toolkit/lib/header.php:251 #7 header in /usr/www/users/gmurgi/kirby/kirby/vendor/getkirby/toolkit/lib/header.php:251 #6 Header:redirect in /usr/www/users/gmurgi/kirby/kirby/vendor/getkirby/toolkit/lib/redirect.php:25 #5 Redirect:send in /usr/www/users/gmurgi/kirby/kirby/vendor/getkirby/toolkit/lib/redirect.php:42 #4 Redirect:to in /usr/www/users/gmurgi/kirby/kirby/vendor/getkirby/toolkit/helpers.php:28 #3 go in /usr/www/users/gmurgi/kirby/kirby/kirby.php:287 #2 Kirby:{closure} in /usr/www/users/gmurgi/kirby/kirby/vendor/getkirby/toolkit/helpers.php:280 #1 call in /usr/www/users/gmurgi/kirby/kirby/kirby.php:718 #0 Kirby:launch in /usr/www/users/gmurgi/kirby/index.php:16
Stack frames (9)
8
Whoops
\
Exception
\
ErrorException
/
vendor
/
getkirby
/
toolkit
/
lib
/
header.php
251
7
header
/
vendor
/
getkirby
/
toolkit
/
lib
/
header.php
251
6
Header
redirect
/
vendor
/
getkirby
/
toolkit
/
lib
/
redirect.php
25
5
Redirect
send
/
vendor
/
getkirby
/
toolkit
/
lib
/
redirect.php
42
4
Redirect
to
/
vendor
/
getkirby
/
toolkit
/
helpers.php
28
3
go
/
kirby.php
287
2
Kirby
{closure}
/
vendor
/
getkirby
/
toolkit
/
helpers.php
280
1
call
/
kirby.php
718
0
Kirby
launch
/
usr
/
www
/
users
/
gmurgi
/
kirby
/
index.php
16
/
usr
/
www
/
users
/
gmurgi
/
kirby
/
kirby
/
vendor
/
getkirby
/
toolkit
/
lib
/
header.php
  public static function unavailable($send = true) {
    return static::status(503, $send);
  }
 
  /**
   * Sends a redirect header
   * 
   * @param boolean $send
   * @return string|null
   */
  public static function redirect($url, $code = 301, $send = true) {
 
    $status   = static::status($code, false); 
    $location = 'Location:' . $url;
 
    if(!$send) {
      return $status . "\r\n" . $location;
    }
 
    header($status);
    header($location);
    exit();
 
  }
 
  /**
   * Sends download headers for anything that is downloadable 
   * 
   * @param array $params Check out the defaults array for available parameters
   */
   public static function download($params = array()) {
 
    $defaults = array(
      'name'     => 'download',
      'size'     => false,
      'mime'     => 'application/force-download',
      'modified' => time()
    );
 
    $options = array_merge($defaults, $params);
/
usr
/
www
/
users
/
gmurgi
/
kirby
/
kirby
/
vendor
/
getkirby
/
toolkit
/
lib
/
header.php
  public static function unavailable($send = true) {
    return static::status(503, $send);
  }
 
  /**
   * Sends a redirect header
   * 
   * @param boolean $send
   * @return string|null
   */
  public static function redirect($url, $code = 301, $send = true) {
 
    $status   = static::status($code, false); 
    $location = 'Location:' . $url;
 
    if(!$send) {
      return $status . "\r\n" . $location;
    }
 
    header($status);
    header($location);
    exit();
 
  }
 
  /**
   * Sends download headers for anything that is downloadable 
   * 
   * @param array $params Check out the defaults array for available parameters
   */
   public static function download($params = array()) {
 
    $defaults = array(
      'name'     => 'download',
      'size'     => false,
      'mime'     => 'application/force-download',
      'modified' => time()
    );
 
    $options = array_merge($defaults, $params);
/
usr
/
www
/
users
/
gmurgi
/
kirby
/
kirby
/
vendor
/
getkirby
/
toolkit
/
lib
/
redirect.php
 * Helps redirecting to various places in your app
 * Combined with custom handlers of URL::to, this can be really smart and handy
 * 
 * @package   Kirby Toolkit 
 * @author    Bastian Allgeier <bastian@getkirby.com>
 * @link      http://getkirby.com
 * @copyright Bastian Allgeier
 * @license   http://www.opensource.org/licenses/mit-license.php MIT License
 */
class Redirect {
 
  /**
   * Redirects the user to a new URL
   *
   * @param   string    $url The URL to redirect to
   * @param   boolean   $code The HTTP status code, which should be sent (301, 302 or 303)
   * @param   boolean   $send If true, headers will be sent and redirection will take effect
   */
  public static function send($url = false, $code = false, $send = true) {
    return header::redirect($url, $code, $send);
  }
 
  /**
   * Redirects to a specific URL. You can pass either a normal URI
   * a controller path or simply nothing (which redirects home)
   * You can also pass a second param with the HTTP status code
   */
  public static function to() {
    $args = func_get_args();
 
    // if the last element is a number, use it as HTTP status code
    $code = false;
    if(is_int(end($args))) {
      $code = array_pop($args);
    }
 
    return static::send(call_user_func_array(array('url', 'to'), $args), $code);
  }
 
  /**
/
usr
/
www
/
users
/
gmurgi
/
kirby
/
kirby
/
vendor
/
getkirby
/
toolkit
/
lib
/
redirect.php
   */
  public static function send($url = false, $code = false, $send = true) {
    return header::redirect($url, $code, $send);
  }
 
  /**
   * Redirects to a specific URL. You can pass either a normal URI
   * a controller path or simply nothing (which redirects home)
   * You can also pass a second param with the HTTP status code
   */
  public static function to() {
    $args = func_get_args();
 
    // if the last element is a number, use it as HTTP status code
    $code = false;
    if(is_int(end($args))) {
      $code = array_pop($args);
    }
 
    return static::send(call_user_func_array(array('url', 'to'), $args), $code);
  }
 
  /**
   * Redirects to the home page of the app
   */
  public static function home() {
    static::send(url::home());
  }
 
  /**
   * Redirects to the last location of the user
   * 
   * @param string $fallback
   */
  public static function back($fallback = null) {
    // get the last url
    $last = url::last();
    // make sure there's a proper fallback
    if(empty($last)) $last = $fallback ? $fallback : url::home();
    static::send($last);
/
usr
/
www
/
users
/
gmurgi
/
kirby
/
kirby
/
vendor
/
getkirby
/
toolkit
/
helpers.php
  return call_user_func_array('url::to', func_get_args());
}
 
/**
 * Even shorter shortcut for url::to()
 *
 * @return string
 */
function u() {
  return call_user_func_array('url::to', func_get_args());
}
 
/**
 * Redirects the user to a new URL
 * This uses the URL::to() method and can be super
 * smart with the custom url::to() handler. Check out
 * the URL class for more information
 */
function go() {
  call_user_func_array('redirect::to', func_get_args());
}
 
/**
 * Shortcut for r::get()
 *
 * @param   mixed    $key The key to look for. Pass false or null to return the entire request array.
 * @param   mixed    $default Optional default value, which should be returned if no element has been found
 * @return  mixed
 */
function get($key = null, $default = null) {
  return r::data($key, $default);
}
 
/**
 * Returns all params from the current url
 *
 * @return array
 */
function params() {
  return url::params();
/
usr
/
www
/
users
/
gmurgi
/
kirby
/
kirby
/
kirby.php
      }
 
      // get the language code from the route
      $lang = ($kirby->route->lang)? $kirby->route->lang->code() : false;
 
      // visit the currently active page
      $page = ($lang)? $site->visit($path, $lang) : $site->visit($path);
 
      // redirections for files and invalid representations
      if($site->representation !== null) {
 
        // get the filename
        $filename = rawurldecode(basename($path));
        $pagepath = dirname($path);
 
        // check if there's a page for the parent path
        if($parent = $site->find($pagepath)) {
          // check if there's a file for the last element of the path
          if($file = $parent->file($filename)) {
            return go($file->url());
          }
        }
 
        // prevent invalid representation routes
        if($site->representation === '' || $site->representation != $page->representation()) {
          return $site->errorPage();
        }
 
      }
 
      return $page;
 
    };
 
    // tinyurl handling
    $routes['tinyurl'] = $this->component('tinyurl')->route();
 
    // home redirect
    $routes['homeRedirect'] = array(
      'pattern' => $this->options['home'] . '(\..*)?',
/
usr
/
www
/
users
/
gmurgi
/
kirby
/
kirby
/
vendor
/
getkirby
/
toolkit
/
helpers.php
 
/**
 * Facepalm typo alias
 * @see csrf()
 */
function csfr() {
  return call('csrf', func_get_args());
}
 
/**
 * Shortcut for call_user_func_array with a better handling of arguments
 *
 * @param mixed $function
 * @param mixed $arguments
 * @return mixed
 */
function call($function, $arguments = array()) {
  if(!is_callable($function)) return false;
  if(!is_array($arguments)) $arguments = array($arguments);
  return call_user_func_array($function, $arguments);
}
 
/**
 * Parses yaml structured text
 *
 * @param $string
 * @return array
 */
function yaml($string) {
  return yaml::decode($string);
}
 
/**
 * Simple email sender helper
 *
 * @param array $params
 * @return Email
 */
function email($params = array()) {
  return new Email($params);
/
usr
/
www
/
users
/
gmurgi
/
kirby
/
kirby
/
kirby.php
 
    // load all plugins
    $this->plugins();
 
    // start the router
    $this->router = new Router($this->routes());
    $this->route  = $this->router->run($this->path());
 
    // check for a valid route
    if(is_null($this->route)) {
      header::status('500');
      header::type('json');
      die(json_encode(array(
        'status'  => 'error',
        'message' => 'Invalid route or request method'
      )));
    }
 
    // call the router action with all arguments from the pattern
    $response = call($this->route->action(), $this->route->arguments());
 
    // load all language variables
    // this can only be loaded once the router action has been called
    // otherwise the current language is not yet available
    $this->localize();
 
    // build the response
    $this->response = $this->component('response')->make($response);
 
    // store the current language in the session
    if(
        $this->option('language.detect') &&
        $this->site()->multilang() && 
        $this->site()->language()
      ) {      
      s::set('kirby_language', $this->site()->language()->code());
    }
 
    return $this->response;
 
/
usr
/
www
/
users
/
gmurgi
/
kirby
/
index.php
<?php
 
define('DS', DIRECTORY_SEPARATOR);
 
// load kirby
require(__DIR__ . DS . 'kirby' . DS . 'bootstrap.php');
 
// check for a custom site.php
if(file_exists(__DIR__ . DS . 'site.php')) {
  require(__DIR__ . DS . 'site.php');
} else {
  $kirby = kirby();
}
 
// render
echo $kirby->launch();

Environment & details:

Key Value
Kirby Toolkit v2.5.2
Kirby CMS v2.5.2
empty
empty
empty
empty
Key Value
kirby_session_fingerprint d5132c44ecfd00f4363c2269c96fb2f211edbeef
kirby_session_activity 1714914278
device_class desktop
Key Value
MAGICK_TEMPORARY_PATH /usr/home/gmurgi/.tmp
TMPDIR /usr/home/gmurgi/.tmp
PHP_FCGI_MAX_REQUESTS 100000
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PHPRC /home/httpd/php73-ini/gmurgi
PWD /home/httpd/cgi-bin
MAGICK_TMPDIR /usr/home/gmurgi/.tmp
CONTENT_LENGTH 0
HTTP_CONNECTION close
SCRIPT_NAME /index.php
REQUEST_URI /rechner/hauskaufnebenkosten-rechner.png
QUERY_STRING
REQUEST_METHOD GET
SERVER_PROTOCOL HTTP/2.0
GATEWAY_INTERFACE CGI/1.1
REDIRECT_URL /rechner/hauskaufnebenkosten-rechner.png
REMOTE_PORT 46948
SCRIPT_FILENAME /usr/www/users/gmurgi/kirby/index.php
SERVER_ADMIN webmaster@hauskredite.de
CONTEXT_DOCUMENT_ROOT /usr/www/users/gmurgi/kirby
CONTEXT_PREFIX
REQUEST_SCHEME https
DOCUMENT_ROOT /usr/www/users/gmurgi/kirby
REMOTE_ADDR 18.191.84.32
SERVER_PORT 443
SERVER_ADDR 78.47.73.210
SERVER_NAME www.hauskredite.de
SERVER_SOFTWARE Apache
SERVER_SIGNATURE
HTTP_HOST www.hauskredite.de
HTTP_REFERER https://www.hauskredite.de/lexikon/rechner/hauskaufnebenkosten-rechner.png
HTTP_USER_AGENT Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HTTP_ACCEPT */*
SSL_TLS_SNI www.hauskredite.de
HTTPS on
H2_STREAM_TAG 7783-9231-3
H2_STREAM_ID 3
H2_PUSHED_ON
H2_PUSHED
H2_PUSH off
H2PUSH off
HTTP2 on
REDIRECT_STATUS 200
REDIRECT_SSL_TLS_SNI www.hauskredite.de
REDIRECT_HTTPS on
REDIRECT_H2_STREAM_TAG 7783-9231-3
REDIRECT_H2_STREAM_ID 3
REDIRECT_H2_PUSHED_ON
REDIRECT_H2_PUSHED
REDIRECT_H2_PUSH off
REDIRECT_H2PUSH off
REDIRECT_HTTP2 on
FCGI_ROLE RESPONDER
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1714914278.1591
REQUEST_TIME 1714914278
argv Array ( )
argc 0
Key Value
MAGICK_TEMPORARY_PATH /usr/home/gmurgi/.tmp
TMPDIR /usr/home/gmurgi/.tmp
PHP_FCGI_MAX_REQUESTS 100000
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PHPRC /home/httpd/php73-ini/gmurgi
PWD /home/httpd/cgi-bin
MAGICK_TMPDIR /usr/home/gmurgi/.tmp
CONTENT_LENGTH 0
HTTP_CONNECTION close
SCRIPT_NAME /index.php
REQUEST_URI /rechner/hauskaufnebenkosten-rechner.png
QUERY_STRING
REQUEST_METHOD GET
SERVER_PROTOCOL HTTP/2.0
GATEWAY_INTERFACE CGI/1.1
REDIRECT_URL /rechner/hauskaufnebenkosten-rechner.png
REMOTE_PORT 46948
SCRIPT_FILENAME /usr/www/users/gmurgi/kirby/index.php
SERVER_ADMIN webmaster@hauskredite.de
CONTEXT_DOCUMENT_ROOT /usr/www/users/gmurgi/kirby
CONTEXT_PREFIX
REQUEST_SCHEME https
DOCUMENT_ROOT /usr/www/users/gmurgi/kirby
REMOTE_ADDR 18.191.84.32
SERVER_PORT 443
SERVER_ADDR 78.47.73.210
SERVER_NAME www.hauskredite.de
SERVER_SOFTWARE Apache
SERVER_SIGNATURE
HTTP_HOST www.hauskredite.de
HTTP_REFERER https://www.hauskredite.de/lexikon/rechner/hauskaufnebenkosten-rechner.png
HTTP_USER_AGENT Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HTTP_ACCEPT */*
SSL_TLS_SNI www.hauskredite.de
HTTPS on
H2_STREAM_TAG 7783-9231-3
H2_STREAM_ID 3
H2_PUSHED_ON
H2_PUSHED
H2_PUSH off
H2PUSH off
HTTP2 on
REDIRECT_STATUS 200
REDIRECT_SSL_TLS_SNI www.hauskredite.de
REDIRECT_HTTPS on
REDIRECT_H2_STREAM_TAG 7783-9231-3
REDIRECT_H2_STREAM_ID 3
REDIRECT_H2_PUSHED_ON
REDIRECT_H2_PUSHED
REDIRECT_H2_PUSH off
REDIRECT_H2PUSH off
REDIRECT_HTTP2 on
FCGI_ROLE RESPONDER
0. Whoops\Handler\PrettyPageHandler