Twig_Error_Runtime
An exception has been thrown during the rendering of a template ("Opening file for writing failed on error fopen(/var/www/html/templates/it_365news/custom/css-compiled/365news__body_only.css): failed to open stream: Permission denied"). Twig_Error_Runtime thrown with message "An exception has been thrown during the rendering of a template ("Opening file for writing failed on error fopen(/var/www/html/templates/it_365news/custom/css-compiled/365news__body_only.css): failed to open stream: Permission denied")." Stacktrace: #34 Twig_Error_Runtime in /var/www/html/media/gantry5/engines/nucleus/templates/page.html.twig:70 #33 RuntimeException in /var/www/html/libraries/gantry5/vendor/rockettheme/toolbox/File/src/File.php:202 #32 RocketTheme\Toolbox\File\File:lock in /var/www/html/libraries/gantry5/vendor/rockettheme/toolbox/File/src/File.php:316 #31 RocketTheme\Toolbox\File\File:save in /var/www/html/libraries/gantry5/classes/Gantry/Component/Stylesheet/ScssCompiler.php:138 #30 Gantry\Component\Stylesheet\ScssCompiler:compileFile in /var/www/html/libraries/gantry5/classes/Gantry/Component/Theme/ThemeTrait.php:238 #29 Gantry\Framework\Theme:css in /var/www/html/libraries/gantry5/classes/Gantry/Component/Content/Block/HtmlBlock.php:84 #28 Gantry\Component\Content\Block\HtmlBlock:getStyles in /var/www/html/libraries/gantry5/classes/Gantry/Framework/Document.php:62 #27 Gantry\Framework\Document:registerStyles in /var/www/html/libraries/gantry5/classes/Gantry/Framework/Document.php:34 #26 Gantry\Framework\Document:registerAssets in /var/www/html/libraries/gantry5/classes/Gantry/Framework/Base/Platform.php:201 #25 Gantry\Framework\Base\Platform:finalize in /var/www/html/libraries/gantry5/vendor/twig/twig/lib/Twig/Template.php:672 #24 Twig_Template:getAttribute in /var/www/html/cache/gantry5/it_365news/twig/a0/a01b5dd858ee3d51e93d0eec31c1912ea0d914e9b556626505f8a648ad55e75b.php:241 #23 __TwigTemplate_77541446a0626e70e6ed1796f39bae1d4f8ad3fe759495097622c1bad733cdaf:block_page_footer in /var/www/html/libraries/gantry5/vendor/twig/twig/lib/Twig/Template.php:215 #22 Twig_Template:displayBlock in /var/www/html/libraries/gantry5/vendor/twig/twig/lib/Twig/Template.php:174 #21 Twig_Template:displayParentBlock in /var/www/html/cache/gantry5/it_365news/twig/4d/4d0116ec30aed1de9b4c04de601361ff97ce3077de02a4c4707e42f2971a6e23.php:32 #20 __TwigTemplate_3d525bfe069220cb550b7ec33669b782006bb1f0d7f489b63d0094b46d896f14:block_page_footer in /var/www/html/libraries/gantry5/vendor/twig/twig/lib/Twig/Template.php:215 #19 Twig_Template:displayBlock in /var/www/html/cache/gantry5/it_365news/twig/a0/a01b5dd858ee3d51e93d0eec31c1912ea0d914e9b556626505f8a648ad55e75b.php:135 #18 __TwigTemplate_77541446a0626e70e6ed1796f39bae1d4f8ad3fe759495097622c1bad733cdaf:doDisplay in /var/www/html/libraries/gantry5/vendor/twig/twig/lib/Twig/Template.php:432 #17 Twig_Template:displayWithErrorHandling in /var/www/html/libraries/gantry5/vendor/twig/twig/lib/Twig/Template.php:403 #16 Twig_Template:display in /var/www/html/cache/gantry5/it_365news/twig/4d/4d0116ec30aed1de9b4c04de601361ff97ce3077de02a4c4707e42f2971a6e23.php:24 #15 __TwigTemplate_3d525bfe069220cb550b7ec33669b782006bb1f0d7f489b63d0094b46d896f14:doDisplay in /var/www/html/libraries/gantry5/vendor/twig/twig/lib/Twig/Template.php:432 #14 Twig_Template:displayWithErrorHandling in /var/www/html/libraries/gantry5/vendor/twig/twig/lib/Twig/Template.php:403 #13 Twig_Template:display in /var/www/html/cache/gantry5/it_365news/twig/97/97e7bf0781ac783ce0d28bd8206060ccacabd9cfe5500cd74240e324fbd4938e.php:25 #12 __TwigTemplate_0466683de783d9eb3d99f12837c1d837d98413d5300e838ce603bf551e2c4896:doDisplay in /var/www/html/libraries/gantry5/vendor/twig/twig/lib/Twig/Template.php:432 #11 Twig_Template:displayWithErrorHandling in /var/www/html/libraries/gantry5/vendor/twig/twig/lib/Twig/Template.php:403 #10 Twig_Template:display in /var/www/html/libraries/gantry5/vendor/twig/twig/lib/Twig/Template.php:411 #9 Twig_Template:render in /var/www/html/libraries/gantry5/vendor/twig/twig/lib/Twig/Environment.php:362 #8 Twig_Environment:render in /var/www/html/libraries/gantry5/classes/Gantry/Component/Theme/AbstractTheme.php:162 #7 Gantry\Component\Theme\AbstractTheme:render in /var/www/html/templates/it_365news/component.php:27 #6 require in /var/www/html/libraries/src/Document/HtmlDocument.php:658 #5 Joomla\CMS\Document\HtmlDocument:_loadTemplate in /var/www/html/libraries/src/Document/HtmlDocument.php:720 #4 Joomla\CMS\Document\HtmlDocument:_fetchTemplate in /var/www/html/libraries/src/Document/HtmlDocument.php:535 #3 Joomla\CMS\Document\HtmlDocument:parse in /var/www/html/libraries/src/Application/CMSApplication.php:1030 #2 Joomla\CMS\Application\CMSApplication:render in /var/www/html/libraries/src/Application/SiteApplication.php:778 #1 Joomla\CMS\Application\SiteApplication:render in /var/www/html/libraries/src/Application/CMSApplication.php:202 #0 Joomla\CMS\Application\CMSApplication:execute in /var/www/html/index.php:49
Stack frames (35)
34
Twig_Error_Runtime
/
var
/
www
/
html
/
media
/
gantry5
/
engines
/
nucleus
/
templates
/
page.html.twig
70
33
RuntimeException
/
vendor
/
rockettheme
/
toolbox
/
File
/
src
/
File.php
202
32
RocketTheme
\
Toolbox
\
File
\
File
lock
/
vendor
/
rockettheme
/
toolbox
/
File
/
src
/
File.php
316
31
RocketTheme
\
Toolbox
\
File
\
File
save
/
classes
/
Gantry
/
Component
/
Stylesheet
/
ScssCompiler.php
138
30
Gantry
\
Component
\
Stylesheet
\
ScssCompiler
compileFile
/
classes
/
Gantry
/
Component
/
Theme
/
ThemeTrait.php
238
29
Gantry
\
Framework
\
Theme
css
/
classes
/
Gantry
/
Component
/
Content
/
Block
/
HtmlBlock.php
84
28
Gantry
\
Component
\
Content
\
Block
\
HtmlBlock
getStyles
/
classes
/
Gantry
/
Framework
/
Document.php
62
27
Gantry
\
Framework
\
Document
registerStyles
/
classes
/
Gantry
/
Framework
/
Document.php
34
26
Gantry
\
Framework
\
Document
registerAssets
/
classes
/
Gantry
/
Framework
/
Base
/
Platform.php
201
25
Gantry
\
Framework
\
Base
\
Platform
finalize
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Template.php
672
24
Twig_Template
getAttribute
/
var
/
www
/
html
/
cache
/
gantry5
/
it_365news
/
twig
/
a0
/
a01b5dd858ee3d51e93d0eec31c1912ea0d914e9b556626505f8a648ad55e75b.php
241
23
__TwigTemplate_77541446a0626e70e6ed1796f39bae1d4f8ad3fe759495097622c1bad733cdaf
block_page_footer
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Template.php
215
22
Twig_Template
displayBlock
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Template.php
174
21
Twig_Template
displayParentBlock
/
var
/
www
/
html
/
cache
/
gantry5
/
it_365news
/
twig
/
4d
/
4d0116ec30aed1de9b4c04de601361ff97ce3077de02a4c4707e42f2971a6e23.php
32
20
__TwigTemplate_3d525bfe069220cb550b7ec33669b782006bb1f0d7f489b63d0094b46d896f14
block_page_footer
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Template.php
215
19
Twig_Template
displayBlock
/
var
/
www
/
html
/
cache
/
gantry5
/
it_365news
/
twig
/
a0
/
a01b5dd858ee3d51e93d0eec31c1912ea0d914e9b556626505f8a648ad55e75b.php
135
18
__TwigTemplate_77541446a0626e70e6ed1796f39bae1d4f8ad3fe759495097622c1bad733cdaf
doDisplay
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Template.php
432
17
Twig_Template
displayWithErrorHandling
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Template.php
403
16
Twig_Template
display
/
var
/
www
/
html
/
cache
/
gantry5
/
it_365news
/
twig
/
4d
/
4d0116ec30aed1de9b4c04de601361ff97ce3077de02a4c4707e42f2971a6e23.php
24
15
__TwigTemplate_3d525bfe069220cb550b7ec33669b782006bb1f0d7f489b63d0094b46d896f14
doDisplay
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Template.php
432
14
Twig_Template
displayWithErrorHandling
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Template.php
403
13
Twig_Template
display
/
var
/
www
/
html
/
cache
/
gantry5
/
it_365news
/
twig
/
97
/
97e7bf0781ac783ce0d28bd8206060ccacabd9cfe5500cd74240e324fbd4938e.php
25
12
__TwigTemplate_0466683de783d9eb3d99f12837c1d837d98413d5300e838ce603bf551e2c4896
doDisplay
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Template.php
432
11
Twig_Template
displayWithErrorHandling
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Template.php
403
10
Twig_Template
display
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Template.php
411
9
Twig_Template
render
/
vendor
/
twig
/
twig
/
lib
/
Twig
/
Environment.php
362
8
Twig_Environment
render
/
classes
/
Gantry
/
Component
/
Theme
/
AbstractTheme.php
162
7
Gantry
\
Component
\
Theme
\
AbstractTheme
render
/
var
/
www
/
html
/
templates
/
it_365news
/
component.php
27
6
require
/
var
/
www
/
html
/
libraries
/
src
/
Document
/
HtmlDocument.php
658
5
Joomla
\
CMS
\
Document
\
HtmlDocument
_loadTemplate
/
var
/
www
/
html
/
libraries
/
src
/
Document
/
HtmlDocument.php
720
4
Joomla
\
CMS
\
Document
\
HtmlDocument
_fetchTemplate
/
var
/
www
/
html
/
libraries
/
src
/
Document
/
HtmlDocument.php
535
3
Joomla
\
CMS
\
Document
\
HtmlDocument
parse
/
var
/
www
/
html
/
libraries
/
src
/
Application
/
CMSApplication.php
1030
2
Joomla
\
CMS
\
Application
\
CMSApplication
render
/
var
/
www
/
html
/
libraries
/
src
/
Application
/
SiteApplication.php
778
1
Joomla
\
CMS
\
Application
\
SiteApplication
render
/
var
/
www
/
html
/
libraries
/
src
/
Application
/
CMSApplication.php
202
0
Joomla
\
CMS
\
Application
\
CMSApplication
execute
/
var
/
www
/
html
/
index.php
49
    {{ gantry.document.getHtml('body_top')|join("\n    ")|raw }}
{% endset -%}
 
{%- set body_bottom %}
    {% block body_bottom %}
    {% endblock %}
    {{ gantry.document.getHtml('body_bottom')|join("\n    ")|raw }}
{% endset -%}
 
{# Head and footer needs to come last because of any of the above blocks may have CSS or JavaScript in them #}
 
{%- set page_head %}
    {% block page_head -%}
        {% include 'partials/page_head.html.twig' %}
    {%- endblock %}
{% endset -%}
 
{%- set page_footer %}
    {% block page_footer %}
        {% do gantry.platform.finalize() -%}
        {{ gantry.scripts('footer')|join("\n    ")|raw -}}
    {% endblock %}
 
    {{ gantry.debugger.render()|raw }}
{% endset -%}
 
{%- block page -%}
<!DOCTYPE {{ gantry.config.page.doctype|default('html')|raw }}>
<html{{ gantry.page.htmlAttributes|raw }}>
    {{ page_head|raw }}
    {% block page_body -%}
    <body{{ gantry.page.bodyAttributes({'class': [offcanvas_position, gantry.page.preset, 'g-style-' ~ gantry.theme.preset]})|raw }}>
        {{ gantry.config.page.body.body_top|raw }}
        {{ body_top|raw }}
        {{ page_offcanvas|raw }}
        <div id="g-page-surround">
            {% if page_offcanvas|trim %}
            <div class="g-offcanvas-hide g-offcanvas-toggle" data-offcanvas-toggle><i class="fa fa-fw fa-bars"></i></div>
            {% endif %}
            {{ page_top|raw }}
    }
 
    /**
     * Lock file for writing. You need to manually unlock().
     *
     * @param bool $block  For non-blocking lock, set the parameter to false.
     * @return bool
     * @throws \RuntimeException
     */
    public function lock($block = true)
    {
        if (!$this->handle) {
            if (!$this->mkdir(dirname($this->filename))) {
                throw new \RuntimeException('Creating directory failed for ' . $this->filename);
            }
            $this->handle = @fopen($this->filename, 'cb+');
            if (!$this->handle) {
                $error = error_get_last();
 
                throw new \RuntimeException("Opening file for writing failed on error {$error['message']}");
            }
        }
        $lock = $block ? LOCK_EX : LOCK_EX | LOCK_NB;
        return $this->locked = $this->handle ? flock($this->handle, $lock) : false;
    }
 
    /**
     * Returns true if file has been locked for writing.
     *
     * @return bool|null True = locked, false = failed, null = not locked.
     */
    public function locked()
    {
        return $this->locked;
    }
 
    /**
     * Unlock file.
     *
     * @return bool
Exception message: Opening file for writing failed on error fopen(/var/www/html/templates/it_365news/custom/css-compiled/365news__body_only.css): failed to open stream: Permission denied
        }
 
        return $this->content;
    }
 
    /**
     * Save file.
     *
     * @param  mixed  $data  Optional data to be saved, usually array.
     * @throws \RuntimeException
     */
    public function save($data = null)
    {
        if ($data !== null) {
            $this->content($data);
        }
 
        if (!$this->locked) {
            // Obtain blocking lock or fail.
            if (!$this->lock()) {
                throw new \RuntimeException('Obtaining write lock failed on file: ' . $this->filename);
            }
            $lock = true;
        }
 
        // As we are using non-truncating locking, make sure that the file is empty before writing.
        if (@ftruncate($this->handle, 0) === false || @fwrite($this->handle, $this->raw()) === false) {
            $this->unlock();
            throw new \RuntimeException('Saving file failed: ' . $this->filename);
        }
 
        if (isset($lock)) {
            $this->unlock();
        }
 
        // Touch the directory as well, thus marking it modified.
        @touch(dirname($this->filename));
    }
 
    /**
        if ($warnings) {
            $this->warnings[$in] = explode("\n", $warnings);
        }
 
        if (!$this->production) {
            $warning = <<<WARN
/* GANTRY5 DEVELOPMENT MODE ENABLED.
 
   WARNING: This file is automatically generated by Gantry5. Any modifications to this file will be lost!
 
   For more information on modifying CSS, please read:
 
   http://docs.gantry.org/gantry5/configure/styles
   http://docs.gantry.org/gantry5/tutorials/adding-a-custom-style-sheet
 */
WARN;
            $css = $warning . "\n\n" . $css;
        }
 
        $file->save($css);
        $file->unlock();
        $file->free();
 
        $this->createMeta($out, md5($css));
        $this->compiler->cleanParsedFiles();
 
        return true;
    }
 
    /**
     * @param string   $name       Name of function to register to the compiler.
     * @param callable $callback   Function to run when called by the compiler.
     * @return $this
     */
    public function registerFunction($name, callable $callback)
    {
        $this->compiler->registerFunction($name, $callback);
 
        return $this;
    }
        return $this->compiler->reset();
    }
 
    /**
     * Returns URL to CSS file.
     *
     * If file does not exist, it will be created by using CSS compiler.
     *
     * @param string $name
     * @return string
     */
    public function css($name)
    {
        if (!isset($this->cssCache[$name])) {
            $compiler = $this->compiler();
 
            if ($compiler->needsCompile($name, [$this, 'getCssVariables'])) {
                GANTRY_DEBUGGER && \Gantry\Debugger::startTimer("css-{$name}", "Compiling CSS: {$name}") && \Gantry\Debugger::addMessage("Compiling CSS: {$name}");
 
                $compiler->compileFile($name);
 
                GANTRY_DEBUGGER && \Gantry\Debugger::stopTimer("css-{$name}");
            }
 
            $this->cssCache[$name] = $compiler->getCssUrl($name);
        }
 
        return $this->cssCache[$name];
    }
 
    public function getCssVariables()
    {
        if ($this->preset) {
            $variables = $this->presets()->flatten($this->preset . '.styles', '-');
        } else {
            $gantry = self::gantry();
            $variables = $gantry['config']->flatten('styles', '-');
        }
 
        return $variables;
        $styles = $this->getAssetsInLocation('styles', $location);
 
        if (!$styles) {
            return [];
        }
 
        $gantry = Gantry::instance();
 
        /** @var Theme $theme */
        $theme = $gantry['theme'];
 
        /** @var Document $document */
        $document = $gantry['document'];
 
        foreach ($styles as $key => $style) {
            if (isset($style['href'])) {
                $url = $style['href'];
                if (preg_match('|\.scss$|', $url)) {
                    // Compile SCSS files.
                    $url = $theme->css(basename($url, '.scss'));
                }
                // Deal with streams and relative paths.
                $url = $document->url($url, false, null, false);
 
                $styles[$key]['href'] = $url;
            }
        }
 
        return $styles;
    }
 
    /**
     * @param string $location
     * @return array
     * @since 5.4.3
     */
    public function getScripts($location = 'head')
    {
        $scripts = $this->getAssetsInLocation('scripts', $location);
 
    public static function errorPage($new = null)
    {
        static $error = false;
 
        if (isset($new)) {
            $error = (bool) $new;
        }
 
        return $error;
    }
 
    protected static function registerStyles()
    {
        if (static::errorPage()) {
            return;
        }
 
        $doc = \JFactory::getDocument();
 
        $styles = static::$stack[0]->getStyles();
 
        foreach ($styles as $style) {
            switch ($style[':type']) {
                case 'file':
                    $doc->addStyleSheet($style['href'], $style['type'], $style['media'], $style['element']);
                    break;
                case 'inline':
                    $doc->addStyleDeclaration($style['content'], $style['type']);
                    break;
            }
        }
    }
 
    protected static function registerScripts()
    {
        if (static::errorPage()) {
            return;
        }
 
        $doc = \JFactory::getDocument();
class Document extends HtmlDocument
{
    protected static $availableFrameworks = [
        'jquery' => 'registerJquery',
        'jquery.framework' => 'registerJquery',
        'jquery.ui.core' => 'registerJqueryUiCore',
        'jquery.ui.sortable' => 'registerJqueryUiSortable',
        'bootstrap.2' => 'registerBootstrap2',
        'mootools' => 'registerMootools',
        'mootools.framework' => 'registerMootools',
        'mootools.core' => 'registerMootools',
        'mootools.more' => 'registerMootoolsMore',
        'lightcase' => 'registerLightcase',
        'lightcase.init' => 'registerLightcaseInit',
    ];
 
    public static function registerAssets()
    {
        static::registerFrameworks();
        static::registerStyles();
        static::registerScripts();
    }
 
    public static function rootUri()
    {
        return rtrim(\JUri::root(true), '/') ?: '/';
    }
 
    public static function errorPage($new = null)
    {
        static $error = false;
 
        if (isset($new)) {
            $error = (bool) $new;
        }
 
        return $error;
    }
 
    protected static function registerStyles()
    public function getName()
    {
        return $this->name;
    }
 
    public function getEditor($name, $content = '', $width = null, $height = null)
    {
        return null;
    }
 
    public function filter($text)
    {
        return $text;
    }
 
    public function finalize()
    {
        $gantry = Gantry::instance();
 
        $gantry['document']->registerAssets();
    }
 
    public function call()
    {
        $args = func_get_args();
        $callable = array_shift($args);
        return is_callable($callable) ? call_user_func_array($callable, $args) : null;
    }
 
    public function authorize($action)
    {
        return true;
    }
 
    /**
     * @param array|string $dependencies
     * @return bool|null
     * @since 5.4.3
     */
    public function checkDependencies($dependencies)
            if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
                return;
            }
 
            throw new Twig_Error_Runtime(sprintf('Neither the property "%1$s" nor one of the methods "%1$s()", "get%1$s()"/"is%1$s()" or "__call()" exist and have public access in class "%2$s".', $item, $class), -1, $this->getSourceContext());
        }
 
        if ($isDefinedTest) {
            return true;
        }
 
        if ($this->env->hasExtension('Twig_Extension_Sandbox')) {
            $this->env->getExtension('Twig_Extension_Sandbox')->checkMethodAllowed($object, $method);
        }
 
        // Some objects throw exceptions when they have __call, and the method we try
        // to call is not supported. If ignoreStrictCheck is true, we should return null.
        try {
            if (!$arguments) {
                $ret = $object->$method();
            } else {
                $ret = call_user_func_array(array($object, $method), $arguments);
            }
        } catch (BadMethodCallException $e) {
            if ($call && ($ignoreStrictCheck || !$this->env->isStrictVariables())) {
                return;
            }
            throw $e;
        }
 
        // @deprecated in 1.28
        if ($object instanceof Twig_TemplateInterface) {
            $self = $object->getTemplateName() === $this->getTemplateName();
            $message = sprintf('Calling "%s" on template "%s" from template "%s" is deprecated since version 1.28 and won\'t be supported anymore in 2.0.', $item, $object->getTemplateName(), $this->getTemplateName());
            if ('renderBlock' === $method || 'displayBlock' === $method) {
                $message .= sprintf(' Use block("%s"%s) instead).', $arguments[0], $self ? '' : ', template');
            } elseif ('hasBlock' === $method) {
                $message .= sprintf(' Use "block("%s"%s) is defined" instead).', $arguments[0], $self ? '' : ', template');
            } elseif ('render' === $method || 'display' === $method) {
                $message .= sprintf(' Use include("%s") instead).', $object->getTemplateName());
    // line 55
    public function block_body_bottom($context, array $blocks = array())
    {
        // line 56
        echo "    ";
    }
 
    // line 63
    public function block_page_head($context, array $blocks = array())
    {
        // line 64
        $this->loadTemplate("partials/page_head.html.twig", "@nucleus/page.html.twig", 64)->display($context);
    }
 
    // line 69
    public function block_page_footer($context, array $blocks = array())
    {
        // line 70
        echo "        ";
        $this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "platform", array()), "finalize", array(), "method");
        // line 71
        echo twig_join_filter($this->getAttribute(($context["gantry"] ?? null), "scripts", array(0 => "footer"), "method"), "
    ");
    }
 
    // line 77
    public function block_page($context, array $blocks = array())
    {
        // line 78
        echo "<!DOCTYPE ";
        echo (($this->getAttribute($this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "config", array(), "any", false, true), "page", array(), "any", false, true), "doctype", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute($this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "config", array(), "any", false, true), "page", array(), "any", false, true), "doctype", array()), "html")) : ("html"));
        echo ">
<html";
        // line 79
        echo $this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "page", array()), "htmlAttributes", array());
        echo ">
    ";
        // line 80
        echo ($context["page_head"] ?? null);
        echo "
 
        if ($useBlocks && isset($blocks[$name])) {
            $template = $blocks[$name][0];
            $block = $blocks[$name][1];
        } elseif (isset($this->blocks[$name])) {
            $template = $this->blocks[$name][0];
            $block = $this->blocks[$name][1];
        } else {
            $template = null;
            $block = null;
        }
 
        // avoid RCEs when sandbox is enabled
        if (null !== $template && !$template instanceof self) {
            throw new LogicException('A block must be a method on a Twig_Template instance.');
        }
 
        if (null !== $template) {
            try {
                $template->$block($context, $blocks);
            } catch (Twig_Error $e) {
                if (!$e->getSourceContext()) {
                    $e->setSourceContext($template->getSourceContext());
                }
 
                // this is mostly useful for Twig_Error_Loader exceptions
                // see Twig_Error_Loader
                if (false === $e->getTemplateLine()) {
                    $e->setTemplateLine(-1);
                    $e->guess();
                }
 
                throw $e;
            } catch (Exception $e) {
                throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getSourceContext(), $e);
            }
        } elseif (false !== $parent = $this->getParent($context)) {
            $parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false);
        } else {
            @trigger_error(sprintf('Silent display of undefined block "%s" in template "%s" is deprecated since version 1.29 and will throw an exception in 2.0. Use the "block(\'%s\') is defined" expression to test for block existence.', $name, $this->getTemplateName(), $name), E_USER_DEPRECATED);
    /**
     * Displays a parent block.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @param string $name    The block name to display from the parent
     * @param array  $context The context
     * @param array  $blocks  The current set of blocks
     *
     * @internal
     */
    public function displayParentBlock($name, array $context, array $blocks = array())
    {
        $name = (string) $name;
 
        if (isset($this->traits[$name])) {
            $this->traits[$name][0]->displayBlock($name, $context, $blocks, false);
        } elseif (false !== $parent = $this->getParent($context)) {
            $parent->displayBlock($name, $context, $blocks, false);
        } else {
            throw new Twig_Error_Runtime(sprintf('The template has no parent and no traits defining the "%s" block.', $name), -1, $this->getSourceContext());
        }
    }
 
    /**
     * Displays a block.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @param string $name      The block name to display
     * @param array  $context   The context
     * @param array  $blocks    The current set of blocks
     * @param bool   $useBlocks Whether to use the current set of blocks
     *
     * @internal
     */
    public function displayBlock($name, array $context, array $blocks = array(), $useBlocks = true)
    {
            'page_footer' => array($this, 'block_page_footer'),
        );
    }
 
    protected function doGetParent(array $context)
    {
        return "@nucleus/page.html.twig";
    }
 
    protected function doDisplay(array $context, array $blocks = array())
    {
        $this->parent->display($context, array_merge($this->blocks, $blocks));
    }
 
    // line 3
    public function block_page_footer($context, array $blocks = array())
    {
        // line 4
        echo "    ";
        $this->displayParentBlock("page_footer", $context, $blocks);
        echo "
    <jdoc:include type=\"modules\" name=\"debug\" />
";
    }
 
    public function getTemplateName()
    {
        return "partials/page.html.twig";
    }
 
    public function isTraitable()
    {
        return false;
    }
 
    public function getDebugInfo()
    {
        return array (  31 => 4,  28 => 3,  11 => 1,);
    }
 
 
        if ($useBlocks && isset($blocks[$name])) {
            $template = $blocks[$name][0];
            $block = $blocks[$name][1];
        } elseif (isset($this->blocks[$name])) {
            $template = $this->blocks[$name][0];
            $block = $this->blocks[$name][1];
        } else {
            $template = null;
            $block = null;
        }
 
        // avoid RCEs when sandbox is enabled
        if (null !== $template && !$template instanceof self) {
            throw new LogicException('A block must be a method on a Twig_Template instance.');
        }
 
        if (null !== $template) {
            try {
                $template->$block($context, $blocks);
            } catch (Twig_Error $e) {
                if (!$e->getSourceContext()) {
                    $e->setSourceContext($template->getSourceContext());
                }
 
                // this is mostly useful for Twig_Error_Loader exceptions
                // see Twig_Error_Loader
                if (false === $e->getTemplateLine()) {
                    $e->setTemplateLine(-1);
                    $e->guess();
                }
 
                throw $e;
            } catch (Exception $e) {
                throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getSourceContext(), $e);
            }
        } elseif (false !== $parent = $this->getParent($context)) {
            $parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false);
        } else {
            @trigger_error(sprintf('Silent display of undefined block "%s" in template "%s" is deprecated since version 1.29 and will throw an exception in 2.0. Use the "block(\'%s\') is defined" expression to test for block existence.', $name, $this->getTemplateName(), $name), E_USER_DEPRECATED);
        echo "    ";
        $this->displayBlock('body_bottom', $context, $blocks);
        // line 57
        echo "    ";
        echo twig_join_filter($this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "document", array()), "getHtml", array(0 => "body_bottom"), "method"), "
    ");
        echo "
";
        $context["body_bottom"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset());
        // line 62
        ob_start();
        // line 63
        echo "    ";
        $this->displayBlock('page_head', $context, $blocks);
        $context["page_head"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset());
        // line 68
        ob_start();
        // line 69
        echo "    ";
        $this->displayBlock('page_footer', $context, $blocks);
        // line 73
        echo "
    ";
        // line 74
        echo $this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "debugger", array()), "render", array(), "method");
        echo "
";
        $context["page_footer"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset());
        // line 77
        $this->displayBlock('page', $context, $blocks);
    }
 
    // line 7
    public function block_content($context, array $blocks = array())
    {
        // line 8
        echo "        ";
    }
 
    // line 18
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (Throwable $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        }
 
        return ob_get_clean();
    }
 
    protected function displayWithErrorHandling(array $context, array $blocks = array())
    {
        try {
            $this->doDisplay($context, $blocks);
        } catch (Twig_Error $e) {
            if (!$e->getSourceContext()) {
                $e->setSourceContext($this->getSourceContext());
            }
 
            // this is mostly useful for Twig_Error_Loader exceptions
            // see Twig_Error_Loader
            if (false === $e->getTemplateLine()) {
                $e->setTemplateLine(-1);
                $e->guess();
            }
 
            throw $e;
        } catch (Exception $e) {
            throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e);
        }
    }
 
    /**
     * Auto-generated method to display the template with the given context.
    }
 
    /**
     * Returns all blocks.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @return array An array of blocks
     *
     * @internal
     */
    public function getBlocks()
    {
        return $this->blocks;
    }
 
    public function display(array $context, array $blocks = array())
    {
        $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
    }
 
    public function render(array $context)
    {
        $level = ob_get_level();
        ob_start();
        try {
            $this->display($context);
        } catch (Exception $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (Throwable $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
{
    public function __construct(Twig_Environment $env)
    {
        parent::__construct($env);
 
        // line 1
        $this->parent = $this->loadTemplate("@nucleus/page.html.twig", "partials/page.html.twig", 1);
        $this->blocks = array(
            'page_footer' => array($this, 'block_page_footer'),
        );
    }
 
    protected function doGetParent(array $context)
    {
        return "@nucleus/page.html.twig";
    }
 
    protected function doDisplay(array $context, array $blocks = array())
    {
        $this->parent->display($context, array_merge($this->blocks, $blocks));
    }
 
    // line 3
    public function block_page_footer($context, array $blocks = array())
    {
        // line 4
        echo "    ";
        $this->displayParentBlock("page_footer", $context, $blocks);
        echo "
    <jdoc:include type=\"modules\" name=\"debug\" />
";
    }
 
    public function getTemplateName()
    {
        return "partials/page.html.twig";
    }
 
    public function isTraitable()
    {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (Throwable $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        }
 
        return ob_get_clean();
    }
 
    protected function displayWithErrorHandling(array $context, array $blocks = array())
    {
        try {
            $this->doDisplay($context, $blocks);
        } catch (Twig_Error $e) {
            if (!$e->getSourceContext()) {
                $e->setSourceContext($this->getSourceContext());
            }
 
            // this is mostly useful for Twig_Error_Loader exceptions
            // see Twig_Error_Loader
            if (false === $e->getTemplateLine()) {
                $e->setTemplateLine(-1);
                $e->guess();
            }
 
            throw $e;
        } catch (Exception $e) {
            throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e);
        }
    }
 
    /**
     * Auto-generated method to display the template with the given context.
    }
 
    /**
     * Returns all blocks.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @return array An array of blocks
     *
     * @internal
     */
    public function getBlocks()
    {
        return $this->blocks;
    }
 
    public function display(array $context, array $blocks = array())
    {
        $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
    }
 
    public function render(array $context)
    {
        $level = ob_get_level();
        ob_start();
        try {
            $this->display($context);
        } catch (Exception $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (Throwable $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
    public function __construct(Twig_Environment $env)
    {
        parent::__construct($env);
 
        // line 1
        $this->parent = $this->loadTemplate("partials/page.html.twig", "component.html.twig", 1);
        $this->blocks = array(
            'page_body' => array($this, 'block_page_body'),
            'page_layout' => array($this, 'block_page_layout'),
        );
    }
 
    protected function doGetParent(array $context)
    {
        return "partials/page.html.twig";
    }
 
    protected function doDisplay(array $context, array $blocks = array())
    {
        $this->parent->display($context, array_merge($this->blocks, $blocks));
    }
 
    // line 3
    public function block_page_body($context, array $blocks = array())
    {
        // line 4
        echo "<body";
        echo $this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "page", array()), "bodyAttributes", array(0 => array("class" => array(0 => ($context["offcanvas_position"] ?? null), 1 => $this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "page", array()), "preset", array()), 2 => ("g-style-" . $this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "theme", array()), "preset", array()))))), "method");
        echo ">
    ";
        // line 5
        echo $this->getAttribute($this->getAttribute($this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "config", array()), "page", array()), "body", array()), "body_top", array());
        echo "
    ";
        // line 6
        echo ($context["page_top"] ?? null);
        echo "
    ";
        // line 7
        echo ($context["page_layout"] ?? null);
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (Throwable $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        }
 
        return ob_get_clean();
    }
 
    protected function displayWithErrorHandling(array $context, array $blocks = array())
    {
        try {
            $this->doDisplay($context, $blocks);
        } catch (Twig_Error $e) {
            if (!$e->getSourceContext()) {
                $e->setSourceContext($this->getSourceContext());
            }
 
            // this is mostly useful for Twig_Error_Loader exceptions
            // see Twig_Error_Loader
            if (false === $e->getTemplateLine()) {
                $e->setTemplateLine(-1);
                $e->guess();
            }
 
            throw $e;
        } catch (Exception $e) {
            throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e);
        }
    }
 
    /**
     * Auto-generated method to display the template with the given context.
    }
 
    /**
     * Returns all blocks.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @return array An array of blocks
     *
     * @internal
     */
    public function getBlocks()
    {
        return $this->blocks;
    }
 
    public function display(array $context, array $blocks = array())
    {
        $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
    }
 
    public function render(array $context)
    {
        $level = ob_get_level();
        ob_start();
        try {
            $this->display($context);
        } catch (Exception $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (Throwable $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
     * @return array An array of blocks
     *
     * @internal
     */
    public function getBlocks()
    {
        return $this->blocks;
    }
 
    public function display(array $context, array $blocks = array())
    {
        $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
    }
 
    public function render(array $context)
    {
        $level = ob_get_level();
        ob_start();
        try {
            $this->display($context);
        } catch (Exception $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (Throwable $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        }
 
        return ob_get_clean();
    }
 
    protected function displayWithErrorHandling(array $context, array $blocks = array())
    {
        try {
        @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.
     *
 
            $this->renderer = $this->extendTwig($twig, $loader);
        }
 
        return $this->renderer;
    }
 
    /**
     * Render a template file by using given context.
     *
     * @param string $file
     * @param array $context
     * @return string
     */
    public function render($file, array $context = [])
    {
        // Include Gantry specific things to the context.
        $context = $this->getContext($context);
 
        return $this->renderer()->render($file, $context);
    }
 
    /**
     * Compile and render twig string.
     *
     * @param string $string
     * @param array $context
     * @return string
     */
    public function compile($string, array $context = [])
    {
        $renderer = $this->renderer();
        $template = $renderer->createTemplate($string);
 
        // Include Gantry specific things to the context.
        $context = $this->getContext($context);
 
        return $template->render($context);
    }
 
 * http://www.gnu.org/licenses/gpl-2.0.html
 */

defined('_JEXEC') or die;

// Bootstrap Gantry framework or fail gracefully (inside included file).
$gantry = include __DIR__ . '/includes/gantry.php';

/** @var \Gantry\Framework\Theme $theme */
$theme = $gantry['theme'];

$raw = JFactory::getApplication()->input->getString('type') == 'raw';

// Reset used outline configuration.
unset($gantry['configuration']);

// Render the component.
echo $theme
    ->setLayout('_body_only')
    ->render($raw ? 'raw.html.twig' : 'component.html.twig');
 
     * @param   string  $directory  The name of the template
     * @param   string  $filename   The actual filename
     *
     * @return  string  The contents of the template
     *
     * @since   1.7.0
     */
    protected function _loadTemplate($directory, $filename)
    {
        $contents = '';
 
        // Check to see if we have a valid template file
        if (file_exists($directory . '/' . $filename))
        {
            // Store the file path
            $this->_file = $directory . '/' . $filename;
 
            // Get the file content
            ob_start();
            require $directory . '/' . $filename;
            $contents = ob_get_contents();
            ob_end_clean();
        }
 
        // Try to find a favicon by checking the template and root folder
        $icon = '/favicon.ico';
 
        foreach (array($directory, JPATH_BASE) as $dir)
        {
            if (file_exists($dir . $icon))
            {
                $path = str_replace(JPATH_BASE, '', $dir);
                $path = str_replace('\\', '/', $path);
                $this->addFavicon(Uri::base(true) . $path . $icon);
                break;
            }
        }
 
        return $contents;
    }
 
        if (!file_exists($directory . '/' . $template . '/' . $file))
        {
            $file = 'index.php';
        }
 
        // Load the language file for the template
        $lang = \JFactory::getLanguage();
 
        // 1.5 or core then 1.6
        $lang->load('tpl_' . $template, JPATH_BASE, null, false, true)
            || $lang->load('tpl_' . $template, $directory . '/' . $template, null, false, true);
 
        // Assign the variables
        $this->template = $template;
        $this->baseurl = Uri::base(true);
        $this->params = isset($params['params']) ? $params['params'] : new Registry;
 
        // Load
        $this->_template = $this->_loadTemplate($directory . '/' . $template, $file);
 
        return $this;
    }
 
    /**
     * Parse a document template
     *
     * @return  HtmlDocument  instance of $this to allow chaining
     *
     * @since   1.7.0
     */
    protected function _parseTemplate()
    {
        $matches = array();
 
        if (preg_match_all('#<jdoc:include\ type="([^"]+)"(.*)\/>#iU', $this->_template, $matches))
        {
            $template_tags_first = array();
            $template_tags_last = array();
 
            $options['title'] = (isset($args[3])) ? $args[3] : null;
        }
 
        parent::$_buffer[$options['type']][$options['name']][$options['title']] = $content;
 
        return $this;
    }
 
    /**
     * Parses the template and populates the buffer
     *
     * @param   array  $params  Parameters for fetching the template
     *
     * @return  HtmlDocument instance of $this to allow chaining
     *
     * @since   1.7.0
     */
    public function parse($params = array())
    {
        return $this->_fetchTemplate($params)->_parseTemplate();
    }
 
    /**
     * Outputs the template to the browser.
     *
     * @param   boolean  $caching  If true, cache the output
     * @param   array    $params   Associative array of attributes
     *
     * @return  string The rendered data
     *
     * @since   1.7.0
     */
    public function render($caching = false, $params = array())
    {
        $this->_caching = $caching;
 
        if (empty($this->_template))
        {
            $this->parse($params);
        }
     */
    protected function render()
    {
        // Setup the document options.
        $this->docOptions['template'] = $this->get('theme');
        $this->docOptions['file']     = $this->get('themeFile', 'index.php');
        $this->docOptions['params']   = $this->get('themeParams');
 
        if ($this->get('themes.base'))
        {
            $this->docOptions['directory'] = $this->get('themes.base');
        }
        // Fall back to constants.
        else
        {
            $this->docOptions['directory'] = defined('JPATH_THEMES') ? JPATH_THEMES : (defined('JPATH_BASE') ? JPATH_BASE : __DIR__) . '/themes';
        }
 
        // Parse the document.
        $this->document->parse($this->docOptions);
 
        // Trigger the onBeforeRender event.
        \JPluginHelper::importPlugin('system');
        $this->triggerEvent('onBeforeRender');
 
        $caching = false;
 
        if ($this->isClient('site') && $this->get('caching') && $this->get('caching', 2) == 2 && !\JFactory::getUser()->get('id'))
        {
            $caching = true;
        }
 
        // Render the document.
        $data = $this->document->render($caching, $this->docOptions);
 
        // Set the application output data.
        $this->setBody($data);
 
        // Trigger the onAfterRender event.
        $this->triggerEvent('onAfterRender');
                    $this->setUserState('users.login.form.data', array('return' => \JUri::getInstance()->toString()));
                    $this->set('themeFile', 'offline.php');
                    $this->setHeader('Status', '503 Service Temporarily Unavailable', 'true');
                }
 
                if (!is_dir(JPATH_THEMES . '/' . $template->template) && !$this->get('offline'))
                {
                    $this->set('themeFile', 'component.php');
                }
 
                // Ensure themeFile is set by now
                if ($this->get('themeFile') == '')
                {
                    $this->set('themeFile', $file . '.php');
                }
 
                break;
        }
 
        parent::render();
    }
 
    /**
     * Route the application.
     *
     * Routing is the process of examining the request environment to determine which
     * component should receive the request. The component optional parameters
     * are then set in the request object to be processed when the application is being
     * dispatched.
     *
     * @return  void
     *
     * @since   3.2
     */
    protected function route()
    {
        // Execute the parent method
        parent::route();
 
        $Itemid = $this->input->getInt('Itemid', null);
        }
    }
 
    /**
     * Execute the application.
     *
     * @return  void
     *
     * @since   3.2
     */
    public function execute()
    {
        // Perform application routines.
        $this->doExecute();
 
        // If we have an application document object, render it.
        if ($this->document instanceof \JDocument)
        {
            // Render the application output.
            $this->render();
        }
 
        // If gzip compression is enabled in configuration and the server is compliant, compress the output.
        if ($this->get('gzip') && !ini_get('zlib.output_compression') && ini_get('output_handler') !== 'ob_gzhandler')
        {
            $this->compress();
 
            // Trigger the onAfterCompress event.
            $this->triggerEvent('onAfterCompress');
        }
 
        // Send the application response.
        $this->respond();
 
        // Trigger the onAfterRespond event.
        $this->triggerEvent('onAfterRespond');
    }
 
    /**
     * Check if the user is required to reset their password.
{
    include_once __DIR__ . '/defines.php';
}
 
if (!defined('_JDEFINES'))
{
    define('JPATH_BASE', __DIR__);
    require_once JPATH_BASE . '/includes/defines.php';
}
 
require_once JPATH_BASE . '/includes/framework.php';
 
// Set profiler start time and memory usage and mark afterLoad in the profiler.
JDEBUG ? JProfiler::getInstance('Application')->setStart($startTime, $startMem)->mark('afterLoad') : null;
 
// Instantiate the application.
$app = JFactory::getApplication('site');
 
// Execute the application.
$app->execute();
 

Environment & details:

Key Value
tmpl component
print 1
empty
empty
empty
empty
Key Value
REDIRECT_HTTP_AUTHORIZATION
REDIRECT_STATUS 200
HTTP_AUTHORIZATION
HTTP_X_REAL_IP 172.70.114.15
HTTP_X_FORWARDED_FOR 172.70.114.15
HTTP_HOST www.linuxcareer.com
HTTP_CONNECTION close
HTTP_ACCEPT_ENCODING gzip, br
HTTP_CF_RAY 866a985148228272-EWR
HTTP_X_FORWARDED_PROTO https
HTTP_CF_VISITOR {"scheme":"https"}
HTTP_ACCEPT */*
HTTP_USER_AGENT claudebot
HTTP_CF_CONNECTING_IP 54.81.185.66
HTTP_CDN_LOOP cloudflare
HTTP_CF_IPCOUNTRY US
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SERVER_SIGNATURE
Apache/2.4.41 (Ubuntu) Server at www.linuxcareer.com Port 80
SERVER_SOFTWARE Apache/2.4.41 (Ubuntu)
SERVER_NAME www.linuxcareer.com
SERVER_ADDR 172.17.0.4
SERVER_PORT 80
REMOTE_ADDR 172.17.0.1
DOCUMENT_ROOT /var/www/html
REQUEST_SCHEME http
CONTEXT_PREFIX
CONTEXT_DOCUMENT_ROOT /var/www/html
SERVER_ADMIN webmaster@localhost
SCRIPT_FILENAME /var/www/html/index.php
REMOTE_PORT 48758
REDIRECT_URL /is-the-light-dimming-on-the-lamp-stack
REDIRECT_QUERY_STRING tmpl=component&print=1
GATEWAY_INTERFACE CGI/1.1
SERVER_PROTOCOL HTTP/1.0
REQUEST_METHOD GET
QUERY_STRING tmpl=component&print=1
REQUEST_URI /is-the-light-dimming-on-the-lamp-stack?tmpl=component&print=1
SCRIPT_NAME /index.php
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1710821240.569
REQUEST_TIME 1710821240
empty
0. Whoops\Handler\PrettyPageHandler