Deprecated: Required parameter $array1 follows optional parameter $deep in /srv/disk1/2671967/www/minimail.eu/system/src/Grav/Common/Plugin.php on line 302

Deprecated: Required parameter $array2 follows optional parameter $deep in /srv/disk1/2671967/www/minimail.eu/system/src/Grav/Common/Plugin.php on line 302
Crikey! There was an error...
RuntimeException (500)
Failed to start session: session_start(): Session cannot be started after headers have already been sent RuntimeException thrown with message "Failed to start session: session_start(): Session cannot be started after headers have already been sent" Stacktrace: #8 RuntimeException in /srv/disk1/2671967/www/minimail.eu/system/src/Grav/Framework/Session/Session.php:191 #7 Grav\Framework\Session\Session:start in /srv/disk1/2671967/www/minimail.eu/system/src/Grav/Common/Session.php:33 #6 Grav\Common\Session:init in /srv/disk1/2671967/www/minimail.eu/system/src/Grav/Common/Processors/InitializeProcessor.php:40 #5 Grav\Common\Processors\InitializeProcessor:process in /srv/disk1/2671967/www/minimail.eu/system/src/Grav/Common/Grav.php:131 #4 Grav\Common\Grav:Grav\Common\{closure} in /srv/disk1/2671967/www/minimail.eu/system/src/Grav/Common/Grav.php:370 #3 Grav\Common\Grav:Grav\Common\{closure} in /srv/disk1/2671967/www/minimail.eu/system/src/Grav/Common/Grav.php:346 #2 call_user_func_array in /srv/disk1/2671967/www/minimail.eu/system/src/Grav/Common/Grav.php:346 #1 Grav\Common\Grav:__call in /srv/disk1/2671967/www/minimail.eu/system/src/Grav/Common/Grav.php:132 #0 Grav\Common\Grav:process in /srv/disk1/2671967/www/minimail.eu/index.php:52
Stack frames (9)
8
RuntimeException
/
system
/
src
/
Grav
/
Framework
/
Session
/
Session.php
191
7
Grav
\
Framework
\
Session
\
Session
start
/
system
/
src
/
Grav
/
Common
/
Session.php
33
6
Grav
\
Common
\
Session
init
/
system
/
src
/
Grav
/
Common
/
Processors
/
InitializeProcessor.php
40
5
Grav
\
Common
\
Processors
\
InitializeProcessor
process
/
system
/
src
/
Grav
/
Common
/
Grav.php
131
4
Grav
\
Common
\
Grav
Grav
\
Common
\
{closure}
/
system
/
src
/
Grav
/
Common
/
Grav.php
370
3
Grav
\
Common
\
Grav
Grav
\
Common
\
{closure}
/
system
/
src
/
Grav
/
Common
/
Grav.php
346
2
call_user_func_array
/
system
/
src
/
Grav
/
Common
/
Grav.php
346
1
Grav
\
Common
\
Grav
__call
/
system
/
src
/
Grav
/
Common
/
Grav.php
132
0
Grav
\
Common
\
Grav
process
/
index.php
52
/
srv
/
disk1
/
2671967
/
www
/
minimail.eu
/
system
/
src
/
Grav
/
Framework
/
Session
/
Session.php
        }
    }
 
    /**
     * @inheritdoc
     */
    public function start($readonly = false)
    {
        // Protection against invalid session cookie names throwing exception: http://php.net/manual/en/function.session-id.php#116836
        if (isset($_COOKIE[session_name()]) && !preg_match('/^[-,a-zA-Z0-9]{1,128}$/', $_COOKIE[session_name()])) {
            unset($_COOKIE[session_name()]);
        }
 
        $options = $readonly ? ['read_and_close' => '1'] : [];
 
        $success = @session_start($options);
        if (!$success) {
            $last = error_get_last();
            $error = $last ? $last['message'] : 'Unknown error';
            throw new \RuntimeException('Failed to start session: ' . $error, 500);
        }
 
        $params = session_get_cookie_params();
 
        setcookie(
            session_name(),
            session_id(),
            time() + $params['lifetime'],
            $params['path'],
            $params['domain'],
            $params['secure'],
            $params['httponly']
        );
 
        $this->started = true;
 
        return $this;
    }
 
    /**
Arguments
  1. "Failed to start session: session_start(): Session cannot be started after headers have already been sent"
    
/
srv
/
disk1
/
2671967
/
www
/
minimail.eu
/
system
/
src
/
Grav
/
Common
/
Session.php
    protected $autoStart = false;
 
    /**
     * @return \Grav\Framework\Session\Session
     * @deprecated 1.5
     */
    public static function instance()
    {
        return static::getInstance();
    }
 
    /**
     * Initialize session.
     *
     * Code in this function has been moved into SessionServiceProvider class.
     */
    public function init()
    {
        if ($this->autoStart) {
            $this->start();
 
            $this->autoStart = false;
        }
    }
 
    /**
     * @param bool $auto
     * @return $this
     */
    public function setAutoStart($auto)
    {
        $this->autoStart = (bool)$auto;
 
        return $this;
    }
 
    /**
     * Returns attributes.
     *
     * @return array Attributes
/
srv
/
disk1
/
2671967
/
www
/
minimail.eu
/
system
/
src
/
Grav
/
Common
/
Processors
/
InitializeProcessor.php
    {
        /** @var Config $config */
        $config = $this->container['config'];
        $config->debug();
 
        // Use output buffering to prevent headers from being sent too early.
        ob_start();
        if ($config->get('system.cache.gzip') && !@ob_start('ob_gzhandler')) {
            // Enable zip/deflate with a fallback in case of if browser does not support compressing.
            ob_start();
        }
 
        // Initialize the timezone.
        if ($config->get('system.timezone')) {
            date_default_timezone_set($this->container['config']->get('system.timezone'));
        }
 
        // FIXME: Initialize session should happen later after plugins have been loaded. This is a workaround to fix session issues in AWS.
        if (isset($this->container['session']) && $config->get('system.session.initialize', true)) {
            $this->container['session']->init();
        }
 
        /** @var Uri $uri */
        $uri = $this->container['uri'];
        $uri->init();
 
        // Redirect pages with trailing slash if configured to do so.
        $path = $uri->path() ?: '/';
        if ($path !== '/' && $config->get('system.pages.redirect_trailing_slash', false) && Utils::endsWith($path, '/')) {
            $this->container->redirect(rtrim($path, '/'), 302);
        }
 
        $this->container->setLocale();
    }
}
 
/
srv
/
disk1
/
2671967
/
www
/
minimail.eu
/
system
/
src
/
Grav
/
Common
/
Grav.php
        } elseif ($values) {
            $instance = self::$instance;
            foreach ($values as $key => $value) {
                $instance->offsetSet($key, $value);
            }
        }
 
        return self::$instance;
    }
 
    /**
     * Process a request
     */
    public function process()
    {
        // process all processors (e.g. config, initialize, assets, ..., render)
        foreach ($this->processors as $processor) {
            $processor = $this[$processor];
            $this->measureTime($processor->id, $processor->title, function () use ($processor) {
                $processor->process();
            });
        }
 
        /** @var Debugger $debugger */
        $debugger = $this['debugger'];
        $debugger->render();
 
        register_shutdown_function([$this, 'shutdown']);
    }
 
    /**
     * Set the system locale based on the language and configuration
     */
    public function setLocale()
    {
        // Initialize Locale if set and configured.
        if ($this['language']->enabled() && $this['config']->get('system.languages.override_locale')) {
            $language = $this['language']->getLanguage();
            setlocale(LC_ALL, strlen($language) < 3 ? ($language . '_' . strtoupper($language)) : $language);
        } elseif ($this['config']->get('system.default_locale')) {
/
srv
/
disk1
/
2671967
/
www
/
minimail.eu
/
system
/
src
/
Grav
/
Common
/
Grav.php
     *
     * @param  array $values
     *
     * @return static
     */
    protected static function load(array $values)
    {
        $container = new static($values);
 
        $container['grav'] = $container;
 
        $container['debugger'] = new Debugger();
        $debugger = $container['debugger'];
 
        // closure that measures time by wrapping a function into startTimer and stopTimer
        // The debugger can be passed to the closure. Should be more performant
        // then to get it from the container all time.
        $container->measureTime = function ($timerId, $timerTitle, $callback) use ($debugger) {
            $debugger->startTimer($timerId, $timerTitle);
            $callback();
            $debugger->stopTimer($timerId);
        };
 
        $container->measureTime('_services', 'Services', function () use ($container) {
            $container->registerServices($container);
        });
 
        return $container;
    }
 
    /**
     * Register all services
     * Services are defined in the diMap. They can either only the class
     * of a Service Provider or a pair of serviceKey => serviceClass that
     * gets directly mapped into the container.
     *
     * @return void
     */
    protected function registerServices()
    {
/
srv
/
disk1
/
2671967
/
www
/
minimail.eu
/
system
/
src
/
Grav
/
Common
/
Grav.php
 
                ob_end_flush();
                @ob_flush();
                flush();
            }
        }
 
        // Run any time consuming tasks.
        $this->fireEvent('onShutdown');
    }
 
    /**
     * Magic Catch All Function
     * Used to call closures like measureTime on the instance.
     * Source: http://stackoverflow.com/questions/419804/closures-as-class-members
     */
    public function __call($method, $args)
    {
        $closure = $this->$method;
        call_user_func_array($closure, $args);
    }
 
    /**
     * Initialize and return a Grav instance
     *
     * @param  array $values
     *
     * @return static
     */
    protected static function load(array $values)
    {
        $container = new static($values);
 
        $container['grav'] = $container;
 
        $container['debugger'] = new Debugger();
        $debugger = $container['debugger'];
 
        // closure that measures time by wrapping a function into startTimer and stopTimer
        // The debugger can be passed to the closure. Should be more performant
Arguments
  1. "init"
    
  2. "Initialize"
    
  3. Closure {
      class: "Grav\Common\Grav"
      this: Grav { …}
      use: {
        $processor: InitializeProcessor { …}
      }
    }
    
/
srv
/
disk1
/
2671967
/
www
/
minimail.eu
/
system
/
src
/
Grav
/
Common
/
Grav.php
 
                ob_end_flush();
                @ob_flush();
                flush();
            }
        }
 
        // Run any time consuming tasks.
        $this->fireEvent('onShutdown');
    }
 
    /**
     * Magic Catch All Function
     * Used to call closures like measureTime on the instance.
     * Source: http://stackoverflow.com/questions/419804/closures-as-class-members
     */
    public function __call($method, $args)
    {
        $closure = $this->$method;
        call_user_func_array($closure, $args);
    }
 
    /**
     * Initialize and return a Grav instance
     *
     * @param  array $values
     *
     * @return static
     */
    protected static function load(array $values)
    {
        $container = new static($values);
 
        $container['grav'] = $container;
 
        $container['debugger'] = new Debugger();
        $debugger = $container['debugger'];
 
        // closure that measures time by wrapping a function into startTimer and stopTimer
        // The debugger can be passed to the closure. Should be more performant
Arguments
  1. Closure {
      class: "Grav\Common\Grav"
      parameters: {
        $timerId: {}
        $timerTitle: {}
        $callback: {}
      }
      use: {
        $debugger: Debugger { …}
      }
    }
    
  2. array:3 [
      0 => "init"
      1 => "Initialize"
      2 => Closure {
        class: "Grav\Common\Grav"
        this: Grav { …}
        use: {
          $processor: InitializeProcessor { …}
        }
      }
    ]
    
/
srv
/
disk1
/
2671967
/
www
/
minimail.eu
/
system
/
src
/
Grav
/
Common
/
Grav.php
            $instance = self::$instance;
            foreach ($values as $key => $value) {
                $instance->offsetSet($key, $value);
            }
        }
 
        return self::$instance;
    }
 
    /**
     * Process a request
     */
    public function process()
    {
        // process all processors (e.g. config, initialize, assets, ..., render)
        foreach ($this->processors as $processor) {
            $processor = $this[$processor];
            $this->measureTime($processor->id, $processor->title, function () use ($processor) {
                $processor->process();
            });
        }
 
        /** @var Debugger $debugger */
        $debugger = $this['debugger'];
        $debugger->render();
 
        register_shutdown_function([$this, 'shutdown']);
    }
 
    /**
     * Set the system locale based on the language and configuration
     */
    public function setLocale()
    {
        // Initialize Locale if set and configured.
        if ($this['language']->enabled() && $this['config']->get('system.languages.override_locale')) {
            $language = $this['language']->getLanguage();
            setlocale(LC_ALL, strlen($language) < 3 ? ($language . '_' . strtoupper($language)) : $language);
        } elseif ($this['config']->get('system.default_locale')) {
            setlocale(LC_ALL, $this['config']->get('system.default_locale'));
Arguments
  1. "measureTime"
    
  2. array:3 [
      0 => "init"
      1 => "Initialize"
      2 => Closure {
        class: "Grav\Common\Grav"
        this: Grav { …}
        use: {
          $processor: InitializeProcessor { …}
        }
      }
    ]
    
/
srv
/
disk1
/
2671967
/
www
/
minimail.eu
/
index.php
 
// Set timezone to default, falls back to system if php.ini not set
date_default_timezone_set(@date_default_timezone_get());
 
// Set internal encoding if mbstring loaded
if (!extension_loaded('mbstring')) {
    die("'mbstring' extension is not loaded.  This is required for Grav to run correctly");
}
mb_internal_encoding('UTF-8');
 
// Get the Grav instance
$grav = Grav::instance(
    array(
        'loader' => $loader
    )
);
 
// Process the page
try {
    $grav->process();
} catch (\Exception $e) {
    $grav->fireEvent('onFatalException', new Event(array('exception' => $e)));
    throw $e;
}
 

Environment & details:

empty
empty
empty
empty
empty
Key Value
DOCUMENT_ROOT
"/home/www/minimail.eu"
SCRIPT_FILENAME
"/home/www/minimail.eu/index.php"
HTTP_HOST
"minimail.eu"
PHP_FCGI_MAX_REQUESTS
"200"
PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
PHP_FCGI_CHILDREN
"0"
PWD
"/srv/disk1/2671967/www/minimail.eu"
CONTENT_LENGTH
"0"
HTTP_CONNECTION
"close"
SCRIPT_NAME
"/index.php"
REQUEST_URI
"/"
QUERY_STRING
""
REQUEST_METHOD
"GET"
SERVER_PROTOCOL
"HTTP/1.1"
GATEWAY_INTERFACE
"CGI/1.1"
REMOTE_PORT
"40192"
SERVER_ADMIN
"[no address given]"
CONTEXT_DOCUMENT_ROOT
"/home/domains/minimail.eu"
CONTEXT_PREFIX
""
REQUEST_SCHEME
"https"
REMOTE_ADDR
"3.147.76.183"
SERVER_PORT
"443"
SERVER_ADDR
"185.176.40.150"
SERVER_NAME
"minimail.eu"
SERVER_SOFTWARE
"Apache"
SERVER_SIGNATURE
""
HTTP_ACCEPT_ENCODING
"gzip, br, zstd, deflate"
HTTP_USER_AGENT
"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
HTTP_ACCEPT
"*/*"
SSL_TLS_SNI
"minimail.eu"
HTTPS
"on"
SCRIPT_URI
"https://minimail.eu/"
SCRIPT_URL
"/"
env_vhost
"minimail.eu"
UNIQUE_ID
"Zz7BqWiwvlGtUnL0-MrVKQAAAA0"
FCGI_ROLE
"RESPONDER"
PHP_SELF
"/index.php"
REQUEST_TIME_FLOAT
1732166057.319
REQUEST_TIME
1732166057
argv
[]
argc
0
Key Value
DOCUMENT_ROOT
"/home/www/minimail.eu"
SCRIPT_FILENAME
"/home/www/minimail.eu/index.php"
HTTP_HOST
"minimail.eu"
PHP_FCGI_MAX_REQUESTS
"200"
PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
PHP_FCGI_CHILDREN
"0"
PWD
"/srv/disk1/2671967/www/minimail.eu"
CONTENT_LENGTH
"0"
HTTP_CONNECTION
"close"
SCRIPT_NAME
"/index.php"
REQUEST_URI
"/"
QUERY_STRING
""
REQUEST_METHOD
"GET"
SERVER_PROTOCOL
"HTTP/1.1"
GATEWAY_INTERFACE
"CGI/1.1"
REMOTE_PORT
"40192"
SERVER_ADMIN
"[no address given]"
CONTEXT_DOCUMENT_ROOT
"/home/domains/minimail.eu"
CONTEXT_PREFIX
""
REQUEST_SCHEME
"https"
REMOTE_ADDR
"3.147.76.183"
SERVER_PORT
"443"
SERVER_ADDR
"185.176.40.150"
SERVER_NAME
"minimail.eu"
SERVER_SOFTWARE
"Apache"
SERVER_SIGNATURE
""
HTTP_ACCEPT_ENCODING
"gzip, br, zstd, deflate"
HTTP_USER_AGENT
"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
HTTP_ACCEPT
"*/*"
SSL_TLS_SNI
"minimail.eu"
HTTPS
"on"
SCRIPT_URI
"https://minimail.eu/"
SCRIPT_URL
"/"
env_vhost
"minimail.eu"
UNIQUE_ID
"Zz7BqWiwvlGtUnL0-MrVKQAAAA0"
FCGI_ROLE
"RESPONDER"
0. Whoops\Handler\PrettyPageHandler
1. Whoops\Handler\CallbackHandler