Deprecated: Return type of I::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/pourpieger/public_html/kirby/vendor/getkirby/toolkit/lib/i.php on line 62

Deprecated: Return type of I::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/pourpieger/public_html/kirby/vendor/getkirby/toolkit/lib/i.php on line 91

Deprecated: Return type of I::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/pourpieger/public_html/kirby/vendor/getkirby/toolkit/lib/i.php on line 71

Deprecated: Return type of I::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/pourpieger/public_html/kirby/vendor/getkirby/toolkit/lib/i.php on line 101

Deprecated: Return type of I::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/pourpieger/public_html/kirby/vendor/getkirby/toolkit/lib/i.php on line 53

Deprecated: Return type of Collection::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/pourpieger/public_html/kirby/vendor/getkirby/toolkit/lib/collection.php on line 80

Deprecated: Return type of Whoops\Exception\FrameCollection::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/pourpieger/public_html/kirby/vendor/filp/whoops/src/Whoops/Exception/FrameCollection.php on line 101

Deprecated: Return type of Whoops\Exception\FrameCollection::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/pourpieger/public_html/kirby/vendor/filp/whoops/src/Whoops/Exception/FrameCollection.php on line 110

Deprecated: Return type of Whoops\Exception\FrameCollection::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/pourpieger/public_html/kirby/vendor/filp/whoops/src/Whoops/Exception/FrameCollection.php on line 119

Deprecated: Return type of Whoops\Exception\FrameCollection::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/pourpieger/public_html/kirby/vendor/filp/whoops/src/Whoops/Exception/FrameCollection.php on line 128

Deprecated: Return type of Whoops\Exception\FrameCollection::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/pourpieger/public_html/kirby/vendor/filp/whoops/src/Whoops/Exception/FrameCollection.php on line 92

Deprecated: Whoops\Exception\FrameCollection implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /home/pourpieger/public_html/kirby/vendor/filp/whoops/src/Whoops/Exception/FrameCollection.php on line 20

Deprecated: Return type of Whoops\Exception\FrameCollection::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/pourpieger/public_html/kirby/vendor/filp/whoops/src/Whoops/Exception/FrameCollection.php on line 137

Deprecated: Whoops\Exception\Frame implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /home/pourpieger/public_html/kirby/vendor/filp/whoops/src/Whoops/Exception/Frame.php on line 12
Kirby CMS Debugger
Whoops \ Exception \ ErrorException (E_DEPRECATED)
parse_str(): Passing null to parameter #1 ($string) of type string is deprecated Whoops\Exception\ErrorException thrown with message "parse_str(): Passing null to parameter #1 ($string) of type string is deprecated" Stacktrace: #6 Whoops\Exception\ErrorException in /home/pourpieger/public_html/kirby/vendor/getkirby/toolkit/lib/url.php:135 #5 parse_str in /home/pourpieger/public_html/kirby/vendor/getkirby/toolkit/lib/url.php:135 #4 Url:query in /home/pourpieger/public_html/kirby/kirby/request.php:26 #3 Kirby\Request:query in /home/pourpieger/public_html/kirby/kirby.php:619 #2 Kirby:render in /home/pourpieger/public_html/kirby/kirby/component/response.php:29 #1 Kirby\Component\Response:make in /home/pourpieger/public_html/kirby/kirby.php:741 #0 Kirby:launch in /home/pourpieger/public_html/index.php:16
Stack frames (7)
6
Whoops
\
Exception
\
ErrorException
/
vendor
/
getkirby
/
toolkit
/
lib
/
url.php
135
5
parse_str
/
vendor
/
getkirby
/
toolkit
/
lib
/
url.php
135
4
Url
query
/
kirby
/
request.php
26
3
Kirby
\
Request
query
/
kirby.php
619
2
Kirby
render
/
kirby
/
component
/
response.php
29
1
Kirby
\
Component
\
Response
make
/
kirby.php
741
0
Kirby
launch
/
home
/
pourpieger
/
public_html
/
index.php
16
/
home
/
pourpieger
/
public_html
/
kirby
/
vendor
/
getkirby
/
toolkit
/
lib
/
url.php
  /**
   * Returns the path without params
   */
  public static function fragments($url = null) {
    if(is_null($url)) $url = static::current();
    $path = static::path($url);
    if(empty($path)) return null;
    $frag = array();
    foreach(explode('/', $path) as $part) {
      if(strpos($part, static::paramSeparator()) === false) $frag[] = $part;
    }
    return $frag;
  }
 
  /**
   * Returns the query as array
   */
  public static function query($url = null) {
    if(is_null($url)) $url = static::current();
    parse_str(parse_url($url, PHP_URL_QUERY), $array);
    return $array;
  }
 
  /**
   * Checks if the url contains a query string
   */
  public static function hasQuery($url = null) {
    if(is_null($url)) $url = static::current();
    return str::contains($url, '?');
  }
 
  /**
   */
  public static function hash($url = null) {
    if(is_null($url)) $url = static::current();
    return parse_url($url, PHP_URL_FRAGMENT);
  }
 
  public static function build($parts = array(), $url = null) {
 
/
home
/
pourpieger
/
public_html
/
kirby
/
vendor
/
getkirby
/
toolkit
/
lib
/
url.php
  /**
   * Returns the path without params
   */
  public static function fragments($url = null) {
    if(is_null($url)) $url = static::current();
    $path = static::path($url);
    if(empty($path)) return null;
    $frag = array();
    foreach(explode('/', $path) as $part) {
      if(strpos($part, static::paramSeparator()) === false) $frag[] = $part;
    }
    return $frag;
  }
 
  /**
   * Returns the query as array
   */
  public static function query($url = null) {
    if(is_null($url)) $url = static::current();
    parse_str(parse_url($url, PHP_URL_QUERY), $array);
    return $array;
  }
 
  /**
   * Checks if the url contains a query string
   */
  public static function hasQuery($url = null) {
    if(is_null($url)) $url = static::current();
    return str::contains($url, '?');
  }
 
  /**
   */
  public static function hash($url = null) {
    if(is_null($url)) $url = static::current();
    return parse_url($url, PHP_URL_FRAGMENT);
  }
 
  public static function build($parts = array(), $url = null) {
 
/
home
/
pourpieger
/
public_html
/
kirby
/
kirby
/
request.php
use URL;
 
class Request {
 
  protected $kirby;
 
  public function __construct($kirby) {
    $this->kirby = $kirby;
  }
 
  public function url() {
    return url::current();
  }
 
  public function params() {
    return new Request\Params(url::params());
  }
 
  public function query() {
    return new Request\Query(url::query());
  }
 
  public function path() {
    return new Request\Path($this->kirby->path());
  }
 
  public function __call($method, $arguments) {
    if(method_exists('r', $method)) {
      return call('r::' . $method, $arguments);
    } else {
      throw new Exception('Invalid method: ' . $method);
    }
  }
 
  /**
   * Improved var_dump() output
   * 
   * @return array
   */
  public function __debuginfo() {
/
home
/
pourpieger
/
public_html
/
kirby
/
kirby.php
 
  }
 
  /**
   * Renders the HTML for the page or fetches it from the cache
   *
   * @param Page $page
   * @param boolean $headers
   * @return string
   */
  public function render(Page $page, $data = array(), $headers = true) {
 
    // register the currently rendered page
    $this->page = $page;
 
    // send all headers for the page
    if($headers) $page->headers();
 
    // configure pagination urls
    $query  = (string)$this->request()->query();
    $params = (string)$this->request()->params() . r($query, '?') . $query;
 
    pagination::$defaults['url'] = $page->url() . r($params, '/') . $params;
 
    // cache the result if possible
    if($this->options['cache'] && $page->isCachable() && in_array(r::method(), ['GET', 'HEAD'])) {
 
      // try to read the cache by cid (cache id)
      $cacheId = md5(url::current() . $page->representation());
 
      // check for modified content within the content folder
      // and auto-expire the page cache in such a case
      if($this->options['cache.autoupdate'] and $this->cache()->exists($cacheId)) {
 
        // get the creation date of the cache file
        $created = $this->cache()->created($cacheId);
 
        // make sure to kill the cache if the site has been modified
        if($this->site->wasModifiedAfter($created)) {
          $this->cache()->remove($cacheId);
/
home
/
pourpieger
/
public_html
/
kirby
/
kirby
/
component
/
response.php
 * @link      http://getkirby.com
 * @copyright Bastian Allgeier
 * @license   http://getkirby.com/license
 */
class Response extends \Kirby\Component {
 
  /**
   * Builds and return the response by various input
   * 
   * @param mixed $response
   * @return mixed
   */
  public function make($response) {
 
    if(is_string($response)) {
      return $this->kirby->render(page($response));
    } else if(is_array($response)) {
      return $this->kirby->render(page($response[0]), $response[1]);
    } else if(is_a($response, 'Page')) {
      return $this->kirby->render($response);      
    } else if(is_a($response, 'Response')) {
      return $response;
    } else {
      return null;
    }
 
  }
 
}
/
home
/
pourpieger
/
public_html
/
kirby
/
kirby.php
    // 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;
 
  }
 
  /**
   * Register a new hook
   *
   * @param string/array $hook The name of the hook
   * @param closure $callback
   */
/
home
/
pourpieger
/
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
empty
Key Value
PATH /usr/local/bin:/usr/bin:/bin
TEMP /tmp
TMP /tmp
TMPDIR /tmp
PWD /
HTTP_ACCEPT */*
HTTP_ACCEPT_ENCODING gzip, br, zstd, deflate
CONTENT_LENGTH 0
HTTP_HOST pourquoipieger.com
HTTP_USER_AGENT Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HTTP_X_HTTPS 1
UNIQUE_ID Zz6-SGc-4AACYChSl9DhMgAAAA4
SCRIPT_URL /
SCRIPT_URI https://pourquoipieger.com/
HTTPS on
SSL_TLS_SNI pourquoipieger.com
SERVER_SIGNATURE
SERVER_SOFTWARE Apache
SERVER_NAME pourquoipieger.com
SERVER_ADDR 173.209.61.117
SERVER_PORT 443
REMOTE_ADDR 18.119.162.226
DOCUMENT_ROOT /home/pourpieger/public_html
REQUEST_SCHEME https
CONTEXT_PREFIX
CONTEXT_DOCUMENT_ROOT /home/pourpieger/public_html
SERVER_ADMIN webmaster@pourquoipieger.com
SCRIPT_FILENAME /home/pourpieger/public_html/index.php
REMOTE_PORT 42602
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD GET
QUERY_STRING
REQUEST_URI /
SCRIPT_NAME /index.php
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1732165193.0736
REQUEST_TIME 1732165193
argv Array ( )
argc 0
empty
0. Whoops\Handler\PrettyPageHandler