Whoops \ Exception \ ErrorException (E_WARNING)
Cannot modify header information - headers already sent by (output started at /home/valuramallo/public_html/site/plugins/detect/detect.php:49) Whoops\Exception\ErrorException thrown with message "Cannot modify header information - headers already sent by (output started at /home/valuramallo/public_html/site/plugins/detect/detect.php:49)" Stacktrace: #6 Whoops\Exception\ErrorException in /home/valuramallo/public_html/kirby/vendor/getkirby/toolkit/lib/header.php:251 #5 header in /home/valuramallo/public_html/kirby/vendor/getkirby/toolkit/lib/header.php:251 #4 Header:redirect in /home/valuramallo/public_html/kirby/vendor/getkirby/toolkit/lib/redirect.php:25 #3 Redirect:send in /home/valuramallo/public_html/kirby/kirby.php:321 #2 Kirby:{closure} in /home/valuramallo/public_html/kirby/vendor/getkirby/toolkit/helpers.php:282 #1 call in /home/valuramallo/public_html/kirby/kirby.php:733 #0 Kirby:launch in /home/valuramallo/public_html/index.php:16
Stack frames (7)
6
Whoops
\
Exception
\
ErrorException
/
vendor
/
getkirby
/
toolkit
/
lib
/
header.php
251
5
header
/
vendor
/
getkirby
/
toolkit
/
lib
/
header.php
251
4
Header
redirect
/
vendor
/
getkirby
/
toolkit
/
lib
/
redirect.php
25
3
Redirect
send
/
kirby.php
321
2
Kirby
{closure}
/
vendor
/
getkirby
/
toolkit
/
helpers.php
282
1
call
/
kirby.php
733
0
Kirby
launch
/
home
/
valuramallo
/
public_html
/
index.php
16
/
home
/
valuramallo
/
public_html
/
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::unIdn($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);
/
home
/
valuramallo
/
public_html
/
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::unIdn($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);
/
home
/
valuramallo
/
public_html
/
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);
  }
 
  /**
/
home
/
valuramallo
/
public_html
/
kirby
/
kirby.php
 
      }
 
      return $page;
 
    };
 
    // tinyurl handling
    $routes['tinyurl'] = $this->component('tinyurl')->route();
 
    // home redirect
    $routes['homeRedirect'] = array(
      'pattern' => $this->options['home'] . '(\..*)?',
      'action'  => function($extension = null) {
        // ignore invalid extensions
        if($extension === '.') $extension = '';
 
        redirect::send(url::build([
          'fragments' => ($extension)? [$extension] : null
        ]), 307);
      }
    );
 
    // plugin assets
    $routes['pluginAssets'] = array(
      'pattern' => 'assets/plugins/(:any)/(:all)',
      'method'  => 'GET',
      'action'  => function($plugin, $path) use($kirby) {
        $errorResponse = new Response('The file could not be found', 'txt', 404);
 
        // filter out plugin names that contain directory traversal attacks
        if(preg_match('{[\\\\/]}', urldecode($plugin))) return $errorResponse;
        if(preg_match('{^[.]+$}', $plugin))             return $errorResponse;
 
        // build the path to the requested file
        $pluginRoot = $kirby->roots()->plugins() . DS . $plugin . DS . 'assets';
        $fileRoot   = $pluginRoot . DS . str_replace('/', DS, $path);
        if(!is_file($fileRoot)) return $errorResponse;
 
        // make sure that we are still in the plugin's asset dir
/
home
/
valuramallo
/
public_html
/
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);
/
home
/
valuramallo
/
public_html
/
kirby
/
kirby.php
 
    // load all plugins
    $this->plugins();
 
    // start the router
    $this->router = new Router($this->routes());
    $this->route  = $this->router->run(trim($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;
 
/
home
/
valuramallo
/
public_html
/
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.8
Kirby CMS v2.5.8
empty
empty
empty
empty
Key Value
kirby_session_fingerprint 411d7c31bf5cc7ec306ac0fc36b34c6e5c7000b8
kirby_session_activity 1713614998
device_class desktop
Key Value
PATH /usr/local/bin:/bin:/usr/bin
HTTP_ACCEPT */*
HTTP_HOST valuramallo.com
HTTP_USER_AGENT Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
DOCUMENT_ROOT /home/valuramallo/public_html
REMOTE_ADDR 13.59.218.147
REMOTE_PORT 33101
SERVER_ADDR 50.31.188.103
SERVER_NAME valuramallo.com
SERVER_ADMIN webmaster@valuramallo.com
SERVER_PORT 80
REQUEST_SCHEME http
REQUEST_URI /home
REDIRECT_URL /home
REDIRECT_REQUEST_METHOD GET
REDIRECT_STATUS 200
SCRIPT_FILENAME /home/valuramallo/public_html/index.php
QUERY_STRING
SCRIPT_URI http://valuramallo.com/home
SCRIPT_URL /home
SCRIPT_NAME /index.php
SERVER_PROTOCOL HTTP/1.1
SERVER_SOFTWARE LiteSpeed
REQUEST_METHOD GET
X-LSCACHE on
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1713614998.3694
REQUEST_TIME 1713614998
argv Array ( )
argc 0
empty
0. Whoops\Handler\PrettyPageHandler
Kirby CMS Debugger
Whoops \ Exception \ ErrorException (E_CORE_WARNING)
Module 'redis' already loaded Whoops\Exception\ErrorException thrown with message "Module 'redis' already loaded" Stacktrace: #0 Whoops\Exception\ErrorException in Unknown:0
Stack frames (1)
0
Whoops
\
Exception
\
ErrorException
Unknown
0
Unknown

Environment & details:

Key Value
Kirby Toolkit v2.5.8
Kirby CMS v2.5.8
empty
empty
empty
empty
Key Value
kirby_session_fingerprint 411d7c31bf5cc7ec306ac0fc36b34c6e5c7000b8
kirby_session_activity 1713614998
device_class desktop
Key Value
PATH /usr/local/bin:/bin:/usr/bin
HTTP_ACCEPT */*
HTTP_HOST valuramallo.com
HTTP_USER_AGENT Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
DOCUMENT_ROOT /home/valuramallo/public_html
REMOTE_ADDR 13.59.218.147
REMOTE_PORT 33101
SERVER_ADDR 50.31.188.103
SERVER_NAME valuramallo.com
SERVER_ADMIN webmaster@valuramallo.com
SERVER_PORT 80
REQUEST_SCHEME http
REQUEST_URI /home
REDIRECT_URL /home
REDIRECT_REQUEST_METHOD GET
REDIRECT_STATUS 200
SCRIPT_FILENAME /home/valuramallo/public_html/index.php
QUERY_STRING
SCRIPT_URI http://valuramallo.com/home
SCRIPT_URL /home
SCRIPT_NAME /index.php
SERVER_PROTOCOL HTTP/1.1
SERVER_SOFTWARE LiteSpeed
REQUEST_METHOD GET
X-LSCACHE on
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1713614998.3694
REQUEST_TIME 1713614998
argv Array ( )
argc 0
empty
0. Whoops\Handler\PrettyPageHandler