RuntimeException
Unable to create the cache directory (/var/websites/pwvo/scouting-pwvo.nl/cache/gantry5/phoca_premiere/twig/b5). RuntimeException thrown with message "Unable to create the cache directory (/var/websites/pwvo/scouting-pwvo.nl/cache/gantry5/phoca_premiere/twig/b5)." Stacktrace: #13 RuntimeException in /var/websites/pwvo/scouting-pwvo.nl/libraries/gantry5/classes/Gantry/Component/Twig/TwigCacheFilesystem.php:59 #12 Gantry\Component\Twig\TwigCacheFilesystem:write in /var/websites/pwvo/scouting-pwvo.nl/libraries/gantry5/vendor/twig/twig/src/Environment.php:487 #11 Twig\Environment:loadClass in /var/websites/pwvo/scouting-pwvo.nl/libraries/gantry5/vendor/twig/twig/src/Environment.php:445 #10 Twig\Environment:loadTemplate in /var/websites/pwvo/scouting-pwvo.nl/libraries/gantry5/vendor/twig/twig/src/Environment.php:423 #9 Twig\Environment:load in /var/websites/pwvo/scouting-pwvo.nl/libraries/gantry5/vendor/twig/twig/src/Environment.php:384 #8 Twig\Environment:render in /var/websites/pwvo/scouting-pwvo.nl/libraries/gantry5/classes/Gantry/Component/Theme/AbstractTheme.php:163 #7 Gantry\Component\Theme\AbstractTheme:render in /var/websites/pwvo/scouting-pwvo.nl/templates/phoca_premiere/component.php:27 #6 require in /var/websites/pwvo/scouting-pwvo.nl/libraries/src/Document/HtmlDocument.php:658 #5 Joomla\CMS\Document\HtmlDocument:_loadTemplate in /var/websites/pwvo/scouting-pwvo.nl/libraries/src/Document/HtmlDocument.php:720 #4 Joomla\CMS\Document\HtmlDocument:_fetchTemplate in /var/websites/pwvo/scouting-pwvo.nl/libraries/src/Document/HtmlDocument.php:535 #3 Joomla\CMS\Document\HtmlDocument:parse in /var/websites/pwvo/scouting-pwvo.nl/libraries/src/Application/CMSApplication.php:1030 #2 Joomla\CMS\Application\CMSApplication:render in /var/websites/pwvo/scouting-pwvo.nl/libraries/src/Application/SiteApplication.php:778 #1 Joomla\CMS\Application\SiteApplication:render in /var/websites/pwvo/scouting-pwvo.nl/libraries/src/Application/CMSApplication.php:202 #0 Joomla\CMS\Application\CMSApplication:execute in /var/websites/pwvo/scouting-pwvo.nl/index.php:49
Stack frames (14)
13
RuntimeException
/classes/Gantry/Component/Twig/TwigCacheFilesystem.php59
12
Gantry\Component\Twig\TwigCacheFilesystem write
/vendor/twig/twig/src/Environment.php487
11
Twig\Environment loadClass
/vendor/twig/twig/src/Environment.php445
10
Twig\Environment loadTemplate
/vendor/twig/twig/src/Environment.php423
9
Twig\Environment load
/vendor/twig/twig/src/Environment.php384
8
Twig\Environment render
/classes/Gantry/Component/Theme/AbstractTheme.php163
7
Gantry\Component\Theme\AbstractTheme render
/var/websites/pwvo/scouting-pwvo.nl/templates/phoca_premiere/component.php27
6
require
/var/websites/pwvo/scouting-pwvo.nl/libraries/src/Document/HtmlDocument.php658
5
Joomla\CMS\Document\HtmlDocument _loadTemplate
/var/websites/pwvo/scouting-pwvo.nl/libraries/src/Document/HtmlDocument.php720
4
Joomla\CMS\Document\HtmlDocument _fetchTemplate
/var/websites/pwvo/scouting-pwvo.nl/libraries/src/Document/HtmlDocument.php535
3
Joomla\CMS\Document\HtmlDocument parse
/var/websites/pwvo/scouting-pwvo.nl/libraries/src/Application/CMSApplication.php1030
2
Joomla\CMS\Application\CMSApplication render
/var/websites/pwvo/scouting-pwvo.nl/libraries/src/Application/SiteApplication.php778
1
Joomla\CMS\Application\SiteApplication render
/var/websites/pwvo/scouting-pwvo.nl/libraries/src/Application/CMSApplication.php202
0
Joomla\CMS\Application\CMSApplication execute
/var/websites/pwvo/scouting-pwvo.nl/index.php49
    {
        $hash = hash('sha256', $className . '-' . PHP_VERSION);
        return $this->directory.$hash[0].$hash[1].'/'.$hash.'.php';
    }
    /**
     * {@inheritdoc}
     */
    public function load($key)
    {
        @include_once $key;
    }
    /**
     * {@inheritdoc}
     */
    public function write($key, $content)
    {
        $dir = dirname($key);
        if (!is_dir($dir)) {
            if (false === @mkdir($dir, 0777, true) && !is_dir($dir)) {
                throw new \RuntimeException(sprintf('Unable to create the cache directory (%s).', $dir));
            }
        } elseif (!is_writable($dir)) {
            throw new \RuntimeException(sprintf('Unable to write in the cache directory (%s).', $dir));
        }
        $tmpFile = tempnam($dir, basename($key));
        if (false !== @file_put_contents($tmpFile, $content) && @rename($tmpFile, $key)) {
            @chmod($key, 0666 & ~umask());
            if (self::FORCE_BYTECODE_INVALIDATION == ($this->options & self::FORCE_BYTECODE_INVALIDATION)) {
                // Compile cached file into bytecode cache
                if (function_exists('opcache_invalidate')) {
                    // Silence error in case if `opcache.restrict_api` directive is set.
                    @opcache_invalidate($key, true);
                } elseif (function_exists('apc_compile_file')) {
                    @apc_compile_file($key);
                }
            }
            return;
        }
        throw new \RuntimeException(sprintf('Failed to write cache file "%s".', $key));
    }
 
            if (!$this->isAutoReload() || $this->isTemplateFresh($name, $this->cache->getTimestamp($key))) {
                $this->cache->load($key);
            }
 
            $source = null;
            if (!class_exists($cls, false)) {
                $loader = $this->getLoader();
                if (!$loader instanceof SourceContextLoaderInterface) {
                    $source = new Source($loader->getSource($name), $name);
                } else {
                    $source = $loader->getSourceContext($name);
                }
 
                $content = $this->compileSource($source);
 
                if ($this->bcWriteCacheFile) {
                    $this->writeCacheFile($key, $content);
                } else {
                    $this->cache->write($key, $content);
                    $this->cache->load($key);
                }
 
                if (!class_exists($mainCls, false)) {
                    /* Last line of defense if either $this->bcWriteCacheFile was used,
                     * $this->cache is implemented as a no-op or we have a race condition
                     * where the cache was cleared between the above calls to write to and load from
                     * the cache.
                     */
                    eval('?>'.$content);
                }
            }
 
            if (!class_exists($cls, false)) {
                throw new RuntimeError(sprintf('Failed to load Twig template "%s", index "%s": cache might be corrupted.', $name, $index), -1, $source);
            }
        }
 
        if (!$this->runtimeInitialized) {
            $this->initRuntime();
    /**
     * 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 LoaderError  When the template cannot be found
     * @throws RuntimeError When a previously generated cache is corrupted
     * @throws SyntaxError  When an error occurred during compilation
     *
     * @internal
     */
    public function loadTemplate($name, $index = null)
    {
        return $this->loadClass($this->getTemplateClass($name), $name, $index);
    }
 
    /**
     * @internal
     */
    public function loadClass($cls, $name, $index = null)
    {
        $mainCls = $cls;
        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 {
     *
     * @param string|TemplateWrapper|\Twig\Template $name The template name
     *
     * @throws LoaderError  When the template cannot be found
     * @throws RuntimeError When a previously generated cache is corrupted
     * @throws SyntaxError  When an error occurred during compilation
     *
     * @return TemplateWrapper
     */
    public function load($name)
    {
        if ($name instanceof TemplateWrapper) {
            return $name;
        }
 
        if ($name instanceof Template) {
            return new TemplateWrapper($this, $name);
        }
 
        return new TemplateWrapper($this, $this->loadTemplate($name));
    }
 
    /**
     * 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 LoaderError  When the template cannot be found
     * @throws RuntimeError When a previously generated cache is corrupted
     * @throws SyntaxError  When an error occurred during compilation
     *
     * @internal
     */
    public function loadTemplate($name, $index = null)
        @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|TemplateWrapper $name    The template name
     * @param array                  $context An array of parameters to pass to the template
     *
     * @return string The rendered template
     *
     * @throws LoaderError  When the template cannot be found
     * @throws SyntaxError  When an error occurred during compilation
     * @throws RuntimeError When an error occurred during rendering
     */
    public function render($name, array $context = [])
    {
        return $this->load($name)->render($context);
    }
 
    /**
     * Displays a template.
     *
     * @param string|TemplateWrapper $name    The template name
     * @param array                  $context An array of parameters to pass to the template
     *
     * @throws LoaderError  When the template cannot be found
     * @throws SyntaxError  When an error occurred during compilation
     * @throws RuntimeError When an error occurred during rendering
     */
    public function display($name, array $context = [])
    {
        $this->load($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', true)
    ->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
page
empty
empty
empty
empty
Key Value
USER www-data
HOME /var/www
PATH_TRANSLATED redirect:/index.php
PATH_INFO /vrienden-van-ubc
SCRIPT_NAME /index.php
REQUEST_URI /index.php/vrienden-van-ubc?tmpl=component&print=1&page=
QUERY_STRING tmpl=component&print=1&page=
REQUEST_METHOD GET
SERVER_PROTOCOL HTTP/1.1
GATEWAY_INTERFACE CGI/1.1
REMOTE_PORT 38358
SCRIPT_FILENAME //var/websites/pwvo/scouting-pwvo.nl/index.php
SERVER_ADMIN webmaster@scouting-pwvo.nl
CONTEXT_DOCUMENT_ROOT /var/websites/pwvo/scouting-pwvo.nl
CONTEXT_PREFIX
REQUEST_SCHEME https
DOCUMENT_ROOT /var/websites/pwvo/scouting-pwvo.nl
REMOTE_ADDR 54.157.61.194
SERVER_PORT 443
SERVER_ADDR 149.210.187.51
SERVER_NAME www.scouting-pwvo.nl
SERVER_SOFTWARE Apache/2.4.56 (Debian) OpenSSL/1.1.1w
SERVER_SIGNATURE
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HTTP_HOST www.scouting-pwvo.nl
HTTP_USER_AGENT claudebot
HTTP_ACCEPT */*
proxy-nokeepalive 1
SSL_SESSION_RESUMED Initial
SSL_SESSION_ID 6226937a0f9dc300613707d2bc581c7770ec96c6ff8feaef26c3e295f905fb66
SSL_SERVER_A_SIG sha256WithRSAEncryption
SSL_SERVER_A_KEY rsaEncryption
SSL_SERVER_I_DN CN=R3,O=Let's Encrypt,C=US
SSL_SERVER_S_DN CN=www.scouting-pwvo.nl
SSL_SERVER_V_END May 30 02:41:44 2024 GMT
SSL_SERVER_V_START Mar 1 02:41:45 2024 GMT
SSL_SERVER_M_SERIAL 041CB2A2417EF6BC9397F5F75ECCC9F0EB34
SSL_SERVER_M_VERSION 3
SSL_CLIENT_VERIFY NONE
SSL_CIPHER_ALGKEYSIZE 256
SSL_CIPHER_USEKEYSIZE 256
SSL_CIPHER_EXPORT false
SSL_CIPHER TLS_AES_256_GCM_SHA384
SSL_COMPRESS_METHOD NULL
SSL_SECURE_RENEG true
SSL_PROTOCOL TLSv1.3
SSL_VERSION_LIBRARY OpenSSL/1.1.1w
SSL_VERSION_INTERFACE mod_ssl/2.4.56
SSL_SERVER_SAN_DNS_0 www.scouting-pwvo.nl
SSL_SERVER_I_DN_CN R3
SSL_SERVER_I_DN_O Let's Encrypt
SSL_SERVER_I_DN_C US
SSL_SERVER_S_DN_CN www.scouting-pwvo.nl
SSL_TLS_SNI www.scouting-pwvo.nl
HTTPS on
HTTP_AUTHORIZATION
FCGI_ROLE RESPONDER
PHP_SELF /index.php/vrienden-van-ubc
REQUEST_TIME_FLOAT 1710823203.858
REQUEST_TIME 1710823203
empty
0. Whoops\Handler\PrettyPageHandler