RuntimeException (400)
Template "external.html.twig" is not defined. RuntimeException thrown with message "Template "external.html.twig" is not defined." Stacktrace: #14 RuntimeException in /home/imagehover/public_html/system/src/Grav/Common/Twig/Twig.php:358 #13 Twig_Error_Loader in /home/imagehover/public_html/vendor/twig/twig/lib/Twig/Loader/Chain.php:129 #12 Twig_Loader_Chain:getCacheKey in /home/imagehover/public_html/vendor/twig/twig/lib/Twig/Environment.php:329 #11 Twig_Environment:getTemplateClass in /home/imagehover/public_html/vendor/twig/twig/lib/Twig/Environment.php:419 #10 Twig_Environment:loadTemplate in /home/imagehover/public_html/vendor/twig/twig/lib/Twig/Environment.php:362 #9 Twig_Environment:render in /home/imagehover/public_html/system/src/Grav/Common/Twig/Twig.php:346 #8 Grav\Common\Twig\Twig:processSite in /home/imagehover/public_html/system/src/Grav/Common/Service/OutputServiceProvider.php:19 #7 Grav\Common\Service\OutputServiceProvider:Grav\Common\Service\{closure} in /home/imagehover/public_html/vendor/pimple/pimple/src/Pimple/Container.php:113 #6 Pimple\Container:offsetGet in /home/imagehover/public_html/system/src/Grav/Common/Processors/RenderProcessor.php:18 #5 Grav\Common\Processors\RenderProcessor:process in /home/imagehover/public_html/system/src/Grav/Common/Grav.php:126 #4 Grav\Common\Grav:Grav\Common\{closure} in /home/imagehover/public_html/system/src/Grav/Common/Grav.php:368 #3 Grav\Common\Grav:Grav\Common\{closure} in /home/imagehover/public_html/system/src/Grav/Common/Grav.php:344 #2 call_user_func_array in /home/imagehover/public_html/system/src/Grav/Common/Grav.php:344 #1 Grav\Common\Grav:__call in /home/imagehover/public_html/system/src/Grav/Common/Grav.php:127 #0 Grav\Common\Grav:process in /home/imagehover/public_html/index.php:52
Stack frames (15)
14
RuntimeException
/
system
/
src
/
Grav
/
Common
/
Twig
/
Twig.php
358
13
Twig_Error_Loader
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Loader
/
Chain.php
129
12
Twig_Loader_Chain
getCacheKey
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Environment.php
329
11
Twig_Environment
getTemplateClass
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Environment.php
419
10
Twig_Environment
loadTemplate
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Environment.php
362
9
Twig_Environment
render
/
system
/
src
/
Grav
/
Common
/
Twig
/
Twig.php
346
8
Grav
\
Common
\
Twig
\
Twig
processSite
/
system
/
src
/
Grav
/
Common
/
Service
/
OutputServiceProvider.php
19
7
Grav
\
Common
\
Service
\
OutputServiceProvider
Grav
\
Common
\
Service
\
{closure}
/
vendor
/
pimple
/
pimple
/
src
/
Pimple
/
Container.php
113
6
Pimple
\
Container
offsetGet
/
system
/
src
/
Grav
/
Common
/
Processors
/
RenderProcessor.php
18
5
Grav
\
Common
\
Processors
\
RenderProcessor
process
/
system
/
src
/
Grav
/
Common
/
Grav.php
126
4
Grav
\
Common
\
Grav
Grav
\
Common
\
{closure}
/
system
/
src
/
Grav
/
Common
/
Grav.php
368
3
Grav
\
Common
\
Grav
Grav
\
Common
\
{closure}
/
system
/
src
/
Grav
/
Common
/
Grav.php
344
2
call_user_func_array
/
system
/
src
/
Grav
/
Common
/
Grav.php
344
1
Grav
\
Common
\
Grav
__call
/
system
/
src
/
Grav
/
Common
/
Grav.php
127
0
Grav
\
Common
\
Grav
process
/
index.php
52
/
home
/
imagehover
/
public_html
/
system
/
src
/
Grav
/
Common
/
Twig
/
Twig.php
            $this->twig->setCache(false);
        }
 
        // Get Twig template layout
        $template = $this->template($page->template() . $ext);
 
        try {
            $output = $this->twig->render($template, $twig_vars);
        } catch (\Twig_Error_Loader $e) {
            $error_msg = $e->getMessage();
            // Try html version of this template if initial template was NOT html
            if ($ext != '.html' . TWIG_EXT) {
                try {
                    $page->templateFormat('html');
                    $output = $this->twig->render($page->template() . '.html' . TWIG_EXT, $twig_vars);
                } catch (\Twig_Error_Loader $e) {
                    throw new \RuntimeException($error_msg, 400, $e);
                }
            } else {
                throw new \RuntimeException($error_msg, 400, $e);
            }
        }
 
        return $output;
    }
 
    /**
     * Simple helper method to get the twig template if it has already been set, else return
     * the one being passed in
     *
     * @param  string $template the template name
     *
     * @return string           the template name
     */
    public function template($template)
    {
        if (isset($this->template)) {
            return $this->template;
        } else {
            return $template;
Arguments
  1. "Template "external.html.twig" is not defined."
    
/
home
/
imagehover
/
public_html
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Loader
/
Chain.php
 
        return $this->hasSourceCache[$name] = false;
    }
 
    public function getCacheKey($name)
    {
        $exceptions = array();
        foreach ($this->loaders as $loader) {
            if ($loader instanceof Twig_ExistsLoaderInterface && !$loader->exists($name)) {
                continue;
            }
 
            try {
                return $loader->getCacheKey($name);
            } catch (Twig_Error_Loader $e) {
                $exceptions[] = get_class($loader).': '.$e->getMessage();
            }
        }
 
        throw new Twig_Error_Loader(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : ''));
    }
 
    public function isFresh($name, $time)
    {
        $exceptions = array();
        foreach ($this->loaders as $loader) {
            if ($loader instanceof Twig_ExistsLoaderInterface && !$loader->exists($name)) {
                continue;
            }
 
            try {
                return $loader->isFresh($name, $time);
            } catch (Twig_Error_Loader $e) {
                $exceptions[] = get_class($loader).': '.$e->getMessage();
            }
        }
 
        throw new Twig_Error_Loader(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : ''));
    }
}
Arguments
  1. "Template "external.html.twig" is not defined."
    
Exception message: Template "external.html.twig" is not defined.
/
home
/
imagehover
/
public_html
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Environment.php
    /**
     * Gets the template class associated with the given string.
     *
     * The generated template class is based on the following parameters:
     *
     *  * The cache key for the given template;
     *  * The currently enabled extensions;
     *  * Whether the Twig C extension is available or not;
     *  * PHP version;
     *  * Twig version;
     *  * Options with what environment was created.
     *
     * @param string   $name  The name for which to calculate the template class name
     * @param int|null $index The index if it is an embedded template
     *
     * @return string The template class name
     */
    public function getTemplateClass($name, $index = null)
    {
        $key = $this->getLoader()->getCacheKey($name).$this->optionsHash;
 
        return $this->templateClassPrefix.hash('sha256', $key).(null === $index ? '' : '_'.$index);
    }
 
    /**
     * Gets the template class prefix.
     *
     * @return string The template class prefix
     *
     * @deprecated since 1.22 (to be removed in 2.0)
     */
    public function getTemplateClassPrefix()
    {
        @trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED);
 
        return $this->templateClassPrefix;
    }
 
    /**
     * Renders a template.
Arguments
  1. "external.html.twig"
    
/
home
/
imagehover
/
public_html
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Environment.php
    /**
     * Loads a template internal representation.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @param string $name  The template name
     * @param int    $index The index if it is an embedded template
     *
     * @return Twig_TemplateInterface A template instance representing the given template name
     *
     * @throws Twig_Error_Loader  When the template cannot be found
     * @throws Twig_Error_Runtime When a previously generated cache is corrupted
     * @throws Twig_Error_Syntax  When an error occurred during compilation
     *
     * @internal
     */
    public function loadTemplate($name, $index = null)
    {
        $cls = $mainCls = $this->getTemplateClass($name);
        if (null !== $index) {
            $cls .= '_'.$index;
        }
 
        if (isset($this->loadedTemplates[$cls])) {
            return $this->loadedTemplates[$cls];
        }
 
        if (!class_exists($cls, false)) {
            if ($this->bcGetCacheFilename) {
                $key = $this->getCacheFilename($name);
            } else {
                $key = $this->cache->generateKey($name, $mainCls);
            }
 
            if (!$this->isAutoReload() || $this->isTemplateFresh($name, $this->cache->getTimestamp($key))) {
                $this->cache->load($key);
            }
 
            if (!class_exists($cls, false)) {
Arguments
  1. "external.html.twig"
    
/
home
/
imagehover
/
public_html
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Environment.php
        @trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED);
 
        return $this->templateClassPrefix;
    }
 
    /**
     * Renders a template.
     *
     * @param string $name    The template name
     * @param array  $context An array of parameters to pass to the template
     *
     * @return string The rendered template
     *
     * @throws Twig_Error_Loader  When the template cannot be found
     * @throws Twig_Error_Syntax  When an error occurred during compilation
     * @throws Twig_Error_Runtime When an error occurred during rendering
     */
    public function render($name, array $context = array())
    {
        return $this->loadTemplate($name)->render($context);
    }
 
    /**
     * Displays a template.
     *
     * @param string $name    The template name
     * @param array  $context An array of parameters to pass to the template
     *
     * @throws Twig_Error_Loader  When the template cannot be found
     * @throws Twig_Error_Syntax  When an error occurred during compilation
     * @throws Twig_Error_Runtime When an error occurred during rendering
     */
    public function display($name, array $context = array())
    {
        $this->loadTemplate($name)->display($context);
    }
 
    /**
     * Loads a template.
     *
Arguments
  1. "external.html.twig"
    
/
home
/
imagehover
/
public_html
/
system
/
src
/
Grav
/
Common
/
Twig
/
Twig.php
 
        $twig_vars['theme'] = $this->grav['config']->get('theme');
        $twig_vars['pages'] = $pages->root();
        $twig_vars['page'] = $page;
        $twig_vars['header'] = $page->header();
        $twig_vars['media'] = $page->media();
        $twig_vars['content'] = $content;
        $ext = '.' . ($format ? $format : 'html') . TWIG_EXT;
 
        // determine if params are set, if so disable twig cache
        $params = $this->grav['uri']->params(null, true);
        if (!empty($params)) {
            $this->twig->setCache(false);
        }
 
        // Get Twig template layout
        $template = $this->template($page->template() . $ext);
 
        try {
            $output = $this->twig->render($template, $twig_vars);
        } catch (\Twig_Error_Loader $e) {
            $error_msg = $e->getMessage();
            // Try html version of this template if initial template was NOT html
            if ($ext != '.html' . TWIG_EXT) {
                try {
                    $page->templateFormat('html');
                    $output = $this->twig->render($page->template() . '.html' . TWIG_EXT, $twig_vars);
                } catch (\Twig_Error_Loader $e) {
                    throw new \RuntimeException($error_msg, 400, $e);
                }
            } else {
                throw new \RuntimeException($error_msg, 400, $e);
            }
        }
 
        return $output;
    }
 
    /**
     * Simple helper method to get the twig template if it has already been set, else return
Arguments
  1. "external.html.twig"
    
  2. array:25 [
      "config" => Config {}
      "system" => array:22 [
        "absolute_urls" => false
        "timezone" => ""
        "default_locale" => null
        "param_sep" => ":"
        "wrapped_site" => false
        "reverse_proxy_setup" => false
        "force_ssl" => false
        "custom_base_url" => ""
        "username_regex" => "^[a-z0-9_-]{3,16}$"
        "pwd_regex" => "(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}"
        "languages" => array:7 [
          "supported" => []
          "include_default_lang" => true
          "translations" => true
          "translations_fallback" => true
          "session_store_active" => false
          "http_accept_language" => false
          "override_locale" => false
        ]
        "home" => array:2 [
          "alias" => "/home"
          "hide_in_urls" => false
        ]
        "pages" => array:25 [
          "theme" => "antimatter"
          "order" => array:2 [
            "by" => "default"
            "dir" => "asc"
          ]
          "list" => array:1 [
            "count" => 20
          ]
          "dateformat" => array:3 [
            "default" => null
            "short" => "jS M Y"
            "long" => "F jS \a\t g:ia"
          ]
          "publish_dates" => true
          "process" => array:2 [
            "markdown" => true
            "twig" => false
          ]
          "twig_first" => false
          "never_cache_twig" => false
          "events" => array:2 [
            "page" => true
            "twig" => true
          ]
          "markdown" => array:5 [
            "extra" => false
            "auto_line_breaks" => false
            "auto_url_links" => false
            "escape_markup" => false
            "special_chars" => array:2 [
              ">" => "gt"
              "<" => "lt"
            ]
          ]
          "types" => array:7 [
            0 => "txt"
            1 => "xml"
            2 => "html"
            3 => "htm"
            4 => "json"
            5 => "rss"
            6 => "atom"
          ]
          "append_url_extension" => ""
          "expires" => 604800
          "last_modified" => false
          "etag" => false
          "vary_accept_encoding" => false
          "redirect_default_route" => false
          "redirect_default_code" => 301
          "redirect_trailing_slash" => true
          "ignore_files" => array:1 [
            0 => ".DS_Store"
          ]
          "ignore_folders" => array:2 [
            0 => ".git"
            1 => ".idea"
          ]
          "ignore_hidden" => true
          "url_taxonomy_filters" => true
          "frontmatter" => array:2 [
            "process_twig" => false
            "ignore_fields" => array:2 [
              0 => "form"
              1 => "forms"
            ]
          ]
          "markdown_extra" => false
        ]
        "cache" => array:9 [
          "enabled" => true
          "check" => array:1 [
            "method" => "file"
          ]
          "driver" => "auto"
          "prefix" => "g"
          "cli_compatibility" => false
          "lifetime" => 604800
          "gzip" => false
          "allow_webserver_gzip" => false
          "redis" => array:1 [
            "socket" => false
          ]
        ]
        "twig" => array:7 [
          "cache" => true
          "debug" => true
          "auto_reload" => true
          "autoescape" => false
          "undefined_functions" => true
          "undefined_filters" => true
          "umask_fix" => false
        ]
        "assets" => array:12 [
          "css_pipeline" => false
          "css_pipeline_include_externals" => true
          "css_pipeline_before_excludes" => true
          "css_minify" => true
          "css_minify_windows" => false
          "css_rewrite" => true
          "js_pipeline" => false
          "js_pipeline_include_externals" => true
          "js_pipeline_before_excludes" => true
          "js_minify" => true
          "enable_asset_timestamp" => false
          "collections" => array:1 [
            "jquery" => "system://assets/jquery/jquery-2.x.min.js"
          ]
        ]
        "errors" => array:2 [
          "display" => true
          "log" => true
        ]
        "debugger" => array:3 [
          "enabled" => false
          "shutdown" => array:1 [
            "close_connection" => true
          ]
          "twig" => true
        ]
        "images" => array:5 [
          "default_image_quality" => 85
          "cache_all" => false
          "cache_perms" => "0755"
          "debug" => false
          "auto_fix_orientation" => false
        ]
        "media" => array:4 [
          "enable_media_timestamp" => false
          "upload_limit" => 0
          "unsupported_inline_types" => []
          "allowed_fallback_types" => []
        ]
        "session" => array:7 [
          "enabled" => true
          "timeout" => 1800
          "name" => "grav-site"
          "secure" => false
          "httponly" => true
          "split" => true
          "path" => null
        ]
        "gpm" => array:5 [
          "releases" => "stable"
          "proxy_url" => null
          "method" => "auto"
          "verify_peer" => true
          "official_gpm_only" => true
        ]
      ]
      "theme" => array:4 [
        "enabled" => true
        "default_lang" => "en"
        "dropdown" => array:1 [
          "enabled" => false
        ]
        "streams" => array:1 [
          "schemes" => array:1 [
            "theme" => array:2 [
              "type" => "ReadOnlyStream"
              "paths" => array:1 [
                0 => "user/themes/antimatter"
              ]
            ]
          ]
        ]
      ]
      "site" => array:9 [
        "title" => "imagehover.css"
        "default_lang" => "en"
        "author" => array:2 [
          "name" => "Ciarán Walsh"
          "email" => "[email protected]"
        ]
        "taxonomies" => array:2 [
          0 => "category"
          1 => "tag"
        ]
        "metadata" => array:1 [
          "description" => "GravA lovingly crafted CSS Image Hover animation Library"
        ]
        "summary" => array:4 [
          "enabled" => true
          "format" => "short"
          "size" => 300
          "delimiter" => "==="
        ]
        "redirects" => null
        "routes" => null
        "blog" => array:1 [
          "route" => "/blog"
        ]
      ]
      "uri" => Uri {}
      "assets" => Assets {}
      "taxonomy" => Taxonomy {}
      "browser" => Browser {}
      "base_dir" => "/home/imagehover/public_html"
      "base_url" => ""
      "base_url_simple" => ""
      "base_url_absolute" => "http://www.imagehover.io"
      "base_url_relative" => ""
      "home_url" => "/"
      "theme_dir" => "/home/imagehover/public_html/user/themes/antimatter"
      "theme_url" => "/user/themes/antimatter"
      "html_lang" => "en"
      "language_codes" => LanguageCodes {}
      "form" => null
      "form_json_response" => []
      "pages" => Page {}
      "page" => Page {}
      "header" => {}
      "media" => Media {}
      "content" => ""
    ]
    
/
home
/
imagehover
/
public_html
/
system
/
src
/
Grav
/
Common
/
Service
/
OutputServiceProvider.php
<?php
/**
 * @package    Grav.Common.Service
 *
 * @copyright  Copyright (C) 2014 - 2016 RocketTheme, LLC. All rights reserved.
 * @license    MIT License; see LICENSE file for details.
 */
 
namespace Grav\Common\Service;
 
use Pimple\Container;
use Pimple\ServiceProviderInterface;
 
class OutputServiceProvider implements ServiceProviderInterface
{
    public function register(Container $container)
    {
        $container['output'] = function ($c) {
            return $c['twig']->processSite($c['page']->templateFormat());
        };
    }
}
 
Arguments
  1. "html"
    
/
home
/
imagehover
/
public_html
/
vendor
/
pimple
/
pimple
/
src
/
Pimple
/
Container.php
    {
        if (!isset($this->keys[$id])) {
            throw new \InvalidArgumentException(sprintf('Identifier "%s" is not defined.', $id));
        }
 
        if (
            isset($this->raw[$id])
            || !is_object($this->values[$id])
            || isset($this->protected[$this->values[$id]])
            || !method_exists($this->values[$id], '__invoke')
        ) {
            return $this->values[$id];
        }
 
        if (isset($this->factories[$this->values[$id]])) {
            return $this->values[$id]($this);
        }
 
        $raw = $this->values[$id];
        $val = $this->values[$id] = $raw($this);
        $this->raw[$id] = $raw;
 
        $this->frozen[$id] = true;
 
        return $val;
    }
 
    /**
     * Checks if a parameter or an object is set.
     *
     * @param string $id The unique identifier for the parameter or object
     *
     * @return bool
     */
    public function offsetExists($id)
    {
        return isset($this->keys[$id]);
    }
 
    /**
Arguments
  1. Grav {}
    
/
home
/
imagehover
/
public_html
/
system
/
src
/
Grav
/
Common
/
Processors
/
RenderProcessor.php
<?php
/**
 * @package    Grav.Common.Processors
 *
 * @copyright  Copyright (C) 2014 - 2016 RocketTheme, LLC. All rights reserved.
 * @license    MIT License; see LICENSE file for details.
 */
 
namespace Grav\Common\Processors;
 
class RenderProcessor extends ProcessorBase implements ProcessorInterface
{
    public $id = 'render';
    public $title = 'Render';
 
    public function process()
    {
        $this->container->output = $this->container['output'];
        $this->container->fireEvent('onOutputGenerated');
    }
}
 
Arguments
  1. "output"
    
/
home
/
imagehover
/
public_html
/
system
/
src
/
Grav
/
Common
/
Grav.php
                $instance->offsetSet($key, $value);
            }
        }
 
        return self::$instance;
    }
 
    /**
     * Process a request
     */
    public function process()
    {
        /** @var Debugger $debugger */
        $debugger = $this['debugger'];
 
        // 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();
            });
        }
 
        // Set the header type
        $this->header();
 
        echo $this->output;
        $debugger->render();
 
        $this->fireEvent('onOutputRendered');
 
        register_shutdown_function([$this, 'shutdown']);
    }
 
    /**
     * Set the system locale based on the language and configuration
     */
    public function setLocale()
    {
        // Initialize Locale if set and configured.
/
home
/
imagehover
/
public_html
/
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()
    {
/
home
/
imagehover
/
public_html
/
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. "render"
    
  2. "Render"
    
  3. Closure {
      class: "Grav\Common\Grav"
      this: Grav { …}
      use: {
        $processor: RenderProcessor {}
      }
      file: "/home/imagehover/public_html/system/src/Grav/Common/Grav.php"
      line: "125 to 127"
    }
    
/
home
/
imagehover
/
public_html
/
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 {}
      }
      file: "/home/imagehover/public_html/system/src/Grav/Common/Grav.php"
      line: "366 to 370"
    }
    
  2. array:3 [
      0 => "render"
      1 => "Render"
      2 => Closure {
        class: "Grav\Common\Grav"
        this: Grav { …}
        use: {
          $processor: RenderProcessor {}
        }
        file: "/home/imagehover/public_html/system/src/Grav/Common/Grav.php"
        line: "125 to 127"
      }
    ]
    
/
home
/
imagehover
/
public_html
/
system
/
src
/
Grav
/
Common
/
Grav.php
            }
        }
 
        return self::$instance;
    }
 
    /**
     * Process a request
     */
    public function process()
    {
        /** @var Debugger $debugger */
        $debugger = $this['debugger'];
 
        // 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();
            });
        }
 
        // Set the header type
        $this->header();
 
        echo $this->output;
        $debugger->render();
 
        $this->fireEvent('onOutputRendered');
 
        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')) {
Arguments
  1. "measureTime"
    
  2. array:3 [
      0 => "render"
      1 => "Render"
      2 => Closure {
        class: "Grav\Common\Grav"
        this: Grav { …}
        use: {
          $processor: RenderProcessor {}
        }
        file: "/home/imagehover/public_html/system/src/Grav/Common/Grav.php"
        line: "125 to 127"
      }
    ]
    
/
home
/
imagehover
/
public_html
/
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
Key Value
user
User {}
redirect_after_login
"/contact"
Key Value
CONTEXT_DOCUMENT_ROOT
"/home/imagehover/public_html"
CONTEXT_PREFIX
""
DOCUMENT_ROOT
"/home/imagehover/public_html"
GATEWAY_INTERFACE
"CGI/1.1"
HTTP_ACCEPT
"*/*"
HTTP_ACCEPT_ENCODING
"gzip"
HTTP_CDN_LOOP
"cloudflare"
HTTP_CF_CONNECTING_IP
"54.221.43.155"
HTTP_CF_IPCOUNTRY
"US"
HTTP_CF_RAY
"86b9d08bcd880812-IAD"
HTTP_CF_VISITOR
"{"scheme":"http"}"
HTTP_CONNECTION
"Keep-Alive"
HTTP_HOST
"www.imagehover.io"
HTTP_USER_AGENT
"claudebot"
HTTP_X_FORWARDED_FOR
"54.221.43.155"
HTTP_X_FORWARDED_PROTO
"http"
PATH
"/bin:/usr/bin"
PHP_INI_SCAN_DIR
"/opt/cpanel/ea-php70/root/etc:/opt/cpanel/ea-php70/root/etc/php.d:."
QUERY_STRING
""
REDIRECT_SCRIPT_URI
"http://www.imagehover.io/contact"
REDIRECT_SCRIPT_URL
"/contact"
REDIRECT_STATUS
"200"
REDIRECT_UNIQUE_ID
"ZgW8SRTRx4vCs5bz5RzauQAAAEg"
REDIRECT_URL
"/contact"
REMOTE_ADDR
"172.70.38.56"
REMOTE_PORT
"22330"
REQUEST_METHOD
"GET"
REQUEST_SCHEME
"http"
REQUEST_URI
"/contact"
SCRIPT_FILENAME
"/home/imagehover/public_html/index.php"
SCRIPT_NAME
"/index.php"
SCRIPT_URI
"http://www.imagehover.io/contact"
SCRIPT_URL
"/contact"
SERVER_ADDR
"92.51.242.37"
SERVER_ADMIN
"[email protected]"
SERVER_NAME
"www.imagehover.io"
SERVER_PORT
"80"
SERVER_PROTOCOL
"HTTP/1.1"
SERVER_SIGNATURE
""
SERVER_SOFTWARE
"Apache"
UNIQUE_ID
"ZgW8SRTRx4vCs5bz5RzauQAAAEg"
PHP_SELF
"/index.php"
REQUEST_TIME_FLOAT
1711651913.9565
REQUEST_TIME
1711651913
argv
[]
argc
0
empty
0. Whoops\Handler\PrettyPageHandler
1. Whoops\Handler\CallbackHandler