Whoops \ Exception \ ErrorException (E_WARNING)
preg_replace_callback(): Allocation of JIT memory failed, PCRE JIT will be disabled. This is likely caused by security restrictions. Either grant PHP permission to allocate executable memory, or set pcre.jit=0 Whoops\Exception\ErrorException thrown with message "preg_replace_callback(): Allocation of JIT memory failed, PCRE JIT will be disabled. This is likely caused by security restrictions. Either grant PHP permission to allocate executable memory, or set pcre.jit=0" Stacktrace: #15 Whoops\Exception\ErrorException in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-content/plugins/gantry5/src/classes/Gantry/Component/Content/Document/HtmlDocument.php:715 #14 preg_replace_callback in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-content/plugins/gantry5/src/classes/Gantry/Component/Content/Document/HtmlDocument.php:715 #13 Gantry\Component\Content\Document\HtmlDocument:replaceTokens in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-content/plugins/gantry5/src/classes/Gantry/Component/Content/Document/HtmlDocument.php:559 #12 Gantry\Component\Content\Document\HtmlDocument:urlFilter in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-content/plugins/gantry5/src/classes/Gantry/Framework/Theme.php:102 #11 Gantry\Framework\Theme:postProcessOutput in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-includes/class-wp-hook.php:303 #10 WP_Hook:apply_filters in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-includes/plugin.php:189 #9 apply_filters in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-content/plugins/gantry5/src/vendor/timber/timber/lib/Timber.php:384 #8 Timber\Timber:fetch in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-content/plugins/gantry5/src/vendor/timber/timber/lib/Timber.php:410 #7 Timber\Timber:render in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-content/themes/rt_gemini/footer.php:28 #6 require_once in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-includes/template.php:770 #5 load_template in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-includes/template.php:716 #4 locate_template in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-includes/general-template.php:92 #3 get_footer in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-content/plugins/woocommerce/templates/single-product.php:60 #2 include in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-includes/template-loader.php:106 #1 require_once in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-blog-header.php:19 #0 require in /var/www/agoratorgi.ru/data/www/agoratorgi.ru/index.php:17
Stack frames (16)
15
Whoops\Exception\ErrorException
/classes/Gantry/Component/Content/Document/HtmlDocument.php715
14
preg_replace_callback
/classes/Gantry/Component/Content/Document/HtmlDocument.php715
13
Gantry\Component\Content\Document\HtmlDocument replaceTokens
/classes/Gantry/Component/Content/Document/HtmlDocument.php559
12
Gantry\Component\Content\Document\HtmlDocument urlFilter
/classes/Gantry/Framework/Theme.php102
11
Gantry\Framework\Theme postProcessOutput
/var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-includes/class-wp-hook.php303
10
WP_Hook apply_filters
/var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-includes/plugin.php189
9
apply_filters
/vendor/timber/timber/lib/Timber.php384
8
Timber\Timber fetch
/vendor/timber/timber/lib/Timber.php410
7
Timber\Timber render
/var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-content/themes/rt_gemini/footer.php28
6
require_once
/var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-includes/template.php770
5
load_template
/var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-includes/template.php716
4
locate_template
/var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-includes/general-template.php92
3
get_footer
/var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-content/plugins/woocommerce/templates/single-product.php60
2
include
/var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-includes/template-loader.php106
1
require_once
/var/www/agoratorgi.ru/data/www/agoratorgi.ru/wp-blog-header.php19
0
require
/var/www/agoratorgi.ru/data/www/agoratorgi.ru/index.php17
         * Per OWASP recommendations, we'll use hex entities for any other
         * characters where a named entity does not exist.
         */
        return sprintf('&#x%04X;', static::ord($chr));
    }
 
    /**
     * Replace tokens with strings.
     *
     * @param array $tokens
     * @param $html
     * @return string|NUll
     */
    protected static function replaceTokens(array $tokens, $html)
    {
        foreach ($tokens as $token => $replacement) {
            // We need to use callbacks to turn off backreferences ($1, \\1) in the replacement string.
            $callback = function() use ($replacement) { return $replacement; };
 
            $html = preg_replace_callback('#' . preg_quote($token, '#') . '#u', $callback, $html);
        }
 
        return $html;
    }
 
    /**
     * Register loaded frameworks.
     */
    protected static function registerFrameworks()
    {
        foreach (static::$stack[0]->getFrameworks() as $framework) {
            if (isset(static::$availableFrameworks[$framework])) {
                call_user_func([get_called_class(), static::$availableFrameworks[$framework]]);
            }
        }
    }
 
    protected static function registerJquery()
    {
        static::addScript(
         * Per OWASP recommendations, we'll use hex entities for any other
         * characters where a named entity does not exist.
         */
        return sprintf('&#x%04X;', static::ord($chr));
    }
 
    /**
     * Replace tokens with strings.
     *
     * @param array $tokens
     * @param $html
     * @return string|NUll
     */
    protected static function replaceTokens(array $tokens, $html)
    {
        foreach ($tokens as $token => $replacement) {
            // We need to use callbacks to turn off backreferences ($1, \\1) in the replacement string.
            $callback = function() use ($replacement) { return $replacement; };
 
            $html = preg_replace_callback('#' . preg_quote($token, '#') . '#u', $callback, $html);
        }
 
        return $html;
    }
 
    /**
     * Register loaded frameworks.
     */
    protected static function registerFrameworks()
    {
        foreach (static::$stack[0]->getFrameworks() as $framework) {
            if (isset(static::$availableFrameworks[$framework])) {
                call_user_func([get_called_class(), static::$availableFrameworks[$framework]]);
            }
        }
    }
 
    protected static function registerJquery()
    {
        static::addScript(
            $schemes = $locator->getSchemes();
 
            $list = [];
            foreach ($schemes as $scheme) {
                if (strpos($scheme, 'gantry-') === 0) {
                    $list[] = substr($scheme, 7);
                }
            }
            if (empty($list)) {
                return $html;
            }
 
            $match = '(gantry-(' . implode('|', $list). ')://.*?)';
        } else {
            $match = '(.*?)';
        }
 
        $html = preg_replace_callback('^(\s)(src|href)="' . $match . '"^u', 'static::linkHandler', $html);
        $html = preg_replace_callback('^(\s)url\(' . $match . '\)^u', 'static::urlHandler', $html);
        $html = static::replaceTokens($tokens, $html);
 
        return $html;
    }
 
    /**
     * @param array $matches
     * @return string
     * @internal
     */
    public static function linkHandler(array $matches)
    {
        list($domain, $timestamp_age) = static::$urlFilterParams;
        $url = trim($matches[3]);
        $url = static::url($url, $domain, $timestamp_age, false);
 
        return "{$matches[1]}{$matches[2]}=\"{$url}\"";
    }
 
    /**
     * @param array $matches
        return $twig;
    }
 
    public function prepare_particles()
    {
        if(!is_admin()) {
            $gantry = Gantry::instance();
            $gantry['theme']->prepare();
        }
    }
 
    /**
     * Convert all stream uris into proper links.
     */
    public function postProcessOutput($html)
    {
        $gantry = Gantry::instance();
 
        // Only filter our streams. If there's an error (bad UTF8), fallback with original output.
        return $gantry['document']->urlFilter($html, false, 0, true) ?: $html;
    }
 
    /**
     * @see AbstractTheme::renderer()
     */
    public function renderer()
    {
        if (!$this->renderer) {
            $twig = parent::renderer();
            $twig = apply_filters('twig_apply_filters', $twig);
            $twig = apply_filters('timber/twig/filters', $twig);
            $twig = apply_filters('timber/twig/functions', $twig);
            $twig = apply_filters('timber/twig/escapers', $twig);
            $twig = apply_filters('timber/loader/twig', $twig);
            $this->renderer = $twig;
        }
 
        return $this->renderer;
    }
 
 
        $nesting_level = $this->nesting_level++;
 
        $this->iterations[ $nesting_level ] = array_keys( $this->callbacks );
        $num_args                           = count( $args );
 
        do {
            $this->current_priority[ $nesting_level ] = current( $this->iterations[ $nesting_level ] );
            $priority                                 = $this->current_priority[ $nesting_level ];
 
            foreach ( $this->callbacks[ $priority ] as $the_ ) {
                if ( ! $this->doing_action ) {
                    $args[0] = $value;
                }
 
                // Avoid the array_slice() if possible.
                if ( 0 == $the_['accepted_args'] ) {
                    $value = call_user_func( $the_['function'] );
                } elseif ( $the_['accepted_args'] >= $num_args ) {
                    $value = call_user_func_array( $the_['function'], $args );
                } else {
                    $value = call_user_func_array( $the_['function'], array_slice( $args, 0, (int) $the_['accepted_args'] ) );
                }
            }
        } while ( false !== next( $this->iterations[ $nesting_level ] ) );
 
        unset( $this->iterations[ $nesting_level ] );
        unset( $this->current_priority[ $nesting_level ] );
 
        $this->nesting_level--;
 
        return $value;
    }
 
    /**
     * Calls the callback functions that have been added to an action hook.
     *
     * @since 4.7.0
     *
     * @param array $args Parameters to pass to the callback functions.
        $wp_current_filter[] = $hook_name;
        _wp_call_all_hook( $args );
    }
 
    if ( ! isset( $wp_filter[ $hook_name ] ) ) {
        if ( isset( $wp_filter['all'] ) ) {
            array_pop( $wp_current_filter );
        }
 
        return $value;
    }
 
    if ( ! isset( $wp_filter['all'] ) ) {
        $wp_current_filter[] = $hook_name;
    }
 
    // Don't pass the tag name to WP_Hook.
    array_shift( $args );
 
    $filtered = $wp_filter[ $hook_name ]->apply_filters( $value, $args );
 
    array_pop( $wp_current_filter );
 
    return $filtered;
}
 
/**
 * Calls the callback functions that have been added to a filter hook, specifying arguments in an array.
 *
 * @since 3.0.0
 *
 * @see apply_filters() This function is identical, but the arguments passed to the
 *                      functions hooked to `$hook_name` are supplied using an array.
 *
 * @global WP_Hook[] $wp_filter         Stores all of the filters and actions.
 * @global string[]  $wp_current_filter Stores the list of current filters with the current one last.
 *
 * @param string $hook_name The name of the filter hook.
 * @param array  $args      The arguments supplied to the functions hooked to `$hook_name`.
 * @return mixed The filtered value after all hooked functions are applied to it.
        $template = $twig->createTemplate($string);
        return $template->render($data);
    }
 
    /**
     * Fetch function.
     *
     * @api
     * @param array|string $filenames  Name of the Twig file to render. If this is an array of files, Timber will
     *                                 render the first file that exists.
     * @param array        $data       Optional. An array of data to use in Twig template.
     * @param bool|int     $expires    Optional. In seconds. Use false to disable cache altogether. When passed an
     *                                 array, the first value is used for non-logged in visitors, the second for users.
     *                                 Default false.
     * @param string       $cache_mode Optional. Any of the cache mode constants defined in TimberLoader.
     * @return bool|string The returned output.
     */
    public static function fetch( $filenames, $data = array(), $expires = false, $cache_mode = Loader::CACHE_USE_DEFAULT ) {
        $output = self::compile($filenames, $data, $expires, $cache_mode, true);
        $output = apply_filters('timber_compile_result', $output);
        return $output;
    }
 
    /**
     * Render function.
     *
     * Passes data to a Twig file and echoes the output.
     *
     * @api
     * @example
     * ```php
     * $context = Timber::context();
     *
     * Timber::render( 'index.twig', $context );
     * ```
     * @param array|string $filenames  Name of the Twig file to render. If this is an array of files, Timber will
     *                                 render the first file that exists.
     * @param array        $data       Optional. An array of data to use in Twig template.
     * @param bool|int     $expires    Optional. In seconds. Use false to disable cache altogether. When passed an
     *                                 array, the first value is used for non-logged in visitors, the second for users.
     * Passes data to a Twig file and echoes the output.
     *
     * @api
     * @example
     * ```php
     * $context = Timber::context();
     *
     * Timber::render( 'index.twig', $context );
     * ```
     * @param array|string $filenames  Name of the Twig file to render. If this is an array of files, Timber will
     *                                 render the first file that exists.
     * @param array        $data       Optional. An array of data to use in Twig template.
     * @param bool|int     $expires    Optional. In seconds. Use false to disable cache altogether. When passed an
     *                                 array, the first value is used for non-logged in visitors, the second for users.
     *                                 Default false.
     * @param string       $cache_mode Optional. Any of the cache mode constants defined in TimberLoader.
     * @return bool|string The echoed output.
     */
    public static function render( $filenames, $data = array(), $expires = false, $cache_mode = Loader::CACHE_USE_DEFAULT ) {
        $output = self::fetch($filenames, $data, $expires, $cache_mode);
        echo $output;
        return $output;
    }
 
    /**
     * Render a string with Twig variables.
     *
     * @api
     * @example
     * ```php
     * $data = array(
     *     'username' => 'Jane Doe',
     * );
     *
     * Timber::render_string( 'Hi {{ username }}, I’m a string with a custom Twig variable', $data );
     * ```
     * @param string $string A string with Twig variables.
     * @param array  $data   An array of data to use in Twig template.
     * @return bool|string
     */
 */
 
defined('ABSPATH') or die;
 
/*
 * Third party plugins that hijack the theme will call wp_footer() to get the footer template.
 * We use this to end our output buffer (started in header.php) and render into the views/page-plugin.html.twig template.
 */
 
$timberContext = $GLOBALS['timberContext'];
 
if (!isset($timberContext)) {
    throw new \Exception('Timber context not set in footer.');
}
 
$timberContext['content'] = ob_get_contents();
ob_end_clean();
 
$templates = ['page-plugin.html.twig'];
Timber::render($templates, $timberContext);
 
 
    if ( is_array( $wp_query->query_vars ) ) {
        /*
         * This use of extract() cannot be removed. There are many possible ways that
         * templates could depend on variables that it creates existing, and no way to
         * detect and deprecate it.
         *
         * Passing the EXTR_SKIP flag is the safest option, ensuring globals and
         * function variables cannot be overwritten.
         */
        // phpcs:ignore WordPress.PHP.DontExtract.extract_extract
        extract( $wp_query->query_vars, EXTR_SKIP );
    }
 
    if ( isset( $s ) ) {
        $s = esc_attr( $s );
    }
 
    if ( $require_once ) {
        require_once $_template_file;
    } else {
        require $_template_file;
    }
}
 
function locate_template( $template_names, $load = false, $require_once = true, $args = array() ) {
    $located = '';
    foreach ( (array) $template_names as $template_name ) {
        if ( ! $template_name ) {
            continue;
        }
        if ( file_exists( STYLESHEETPATH . '/' . $template_name ) ) {
            $located = STYLESHEETPATH . '/' . $template_name;
            break;
        } elseif ( file_exists( TEMPLATEPATH . '/' . $template_name ) ) {
            $located = TEMPLATEPATH . '/' . $template_name;
            break;
        } elseif ( file_exists( ABSPATH . WPINC . '/theme-compat/' . $template_name ) ) {
            $located = ABSPATH . WPINC . '/theme-compat/' . $template_name;
            break;
        }
    }
 
    if ( $load && '' !== $located ) {
        load_template( $located, $require_once, $args );
    }
 
    return $located;
}
 
/**
 * Require the template file with WordPress environment.
 *
 * The globals are set up for the template file to ensure that the WordPress
 * environment is available from within the function. The query variables are
 * also available.
 *
 * @since 1.5.0
 * @since 5.5.0 The `$args` parameter was added.
 *
 * @global array      $posts
 * @global WP_Post    $post          Global post object.
 * @global bool       $wp_did_header
 * @global WP_Query   $wp_query      WordPress Query object.
 * @global WP_Rewrite $wp_rewrite    WordPress rewrite component.
     * Fires before the footer template file is loaded.
     *
     * @since 2.1.0
     * @since 2.8.0 The `$name` parameter was added.
     * @since 5.5.0 The `$args` parameter was added.
     *
     * @param string|null $name Name of the specific footer file to use. Null for the default footer.
     * @param array       $args Additional arguments passed to the footer template.
     */
    do_action( 'get_footer', $name, $args );
 
    $templates = array();
    $name      = (string) $name;
    if ( '' !== $name ) {
        $templates[] = "footer-{$name}.php";
    }
 
    $templates[] = 'footer.php';
 
    if ( ! locate_template( $templates, true, true, $args ) ) {
        return false;
    }
}
 
/**
 * Load sidebar template.
 *
 * Includes the sidebar template for a theme or if a name is specified then a
 * specialised sidebar will be included.
 *
 * For the parameter, if the file is called "sidebar-special.php" then specify
 * "special".
 *
 * @since 1.5.0
 * @since 5.5.0 A return value was added.
 * @since 5.5.0 The `$args` parameter was added.
 *
 * @param string $name The name of the specialised sidebar.
 * @param array  $args Optional. Additional arguments passed to the sidebar template.
 *                     Default empty array.
    <?php
        /**
         * woocommerce_after_main_content hook.
         *
         * @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content)
         */
        do_action( 'woocommerce_after_main_content' );
    ?>
 
    <?php
        /**
         * woocommerce_sidebar hook.
         *
         * @hooked woocommerce_get_sidebar - 10
         */
        do_action( 'woocommerce_sidebar' );
    ?>
 
<?php
get_footer( 'shop' );
 
/* Omit closing PHP tag at the end of PHP files to avoid "headers already sent" issues. */
 
            }
 
            break;
        }
    }
 
    if ( ! $template ) {
        $template = get_index_template();
    }
 
    /**
     * Filters the path of the current template before including it.
     *
     * @since 3.0.0
     *
     * @param string $template The path of the template to include.
     */
    $template = apply_filters( 'template_include', $template );
    if ( $template ) {
        include $template;
    } elseif ( current_user_can( 'switch_themes' ) ) {
        $theme = wp_get_theme();
        if ( $theme->errors() ) {
            wp_die( $theme->errors() );
        }
    }
    return;
}
 
<?php
/**
 * Loads the WordPress environment and template.
 *
 * @package WordPress
 */
 
if ( ! isset( $wp_did_header ) ) {
 
    $wp_did_header = true;
 
    // Load the WordPress library.
    require_once __DIR__ . '/wp-load.php';
 
    // Set up the WordPress query.
    wp();
 
    // Load the theme template.
    require_once ABSPATH . WPINC . '/template-loader.php';
 
}
 
<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */
 
/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define( 'WP_USE_THEMES', true );
 
/** Loads the WordPress Environment and Template */
require __DIR__ . '/wp-blog-header.php';
 

Environment & details:

empty
empty
empty
empty
empty
Key Value
SERVER_SOFTWARE Apache/2.4.29 (Ubuntu)
REQUEST_URI /catalog/oborudovanie/zaryadnoe-ustrojstvo-s-ustanovkoj-kontejner-sistema-ventilyaczii-um-1-ekonom/
HTTP_IF_MODIFIED_SINCE Wed, 11 Sep 2024 21:10:10 GMT
GATEWAY_INTERFACE CGI/1.1
PHP_INI_SCAN_DIR /var/www/agoratorgi.ru/data/php-bin-isp-php74/agoratorgi.ru:
REMOTE_ADDR 18.97.9.174
QUERY_STRING
HTTP_USER_AGENT CCBot/2.0 (https://commoncrawl.org/faq/)
DOCUMENT_ROOT /var/www/agoratorgi.ru/data/www/agoratorgi.ru
REMOTE_PORT 58178
HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
SERVER_SIGNATURE <address>Apache/2.4.29 (Ubuntu) Server at agoratorgi.ru Port 443</address>
REDIRECT_REDIRECT_SSL_TLS_SNI agoratorgi.ru
REDIRECT_REDIRECT_HTTPS on
CONTEXT_DOCUMENT_ROOT /var/www/php-bin-isp-php74/agoratorgi.ru/agoratorgi.ru/
SCRIPT_FILENAME /var/www/agoratorgi.ru/data/www/agoratorgi.ru/index.php
HTTP_HOST agoratorgi.ru
SSL_TLS_SNI agoratorgi.ru
REDIRECT_REDIRECT_STATUS 200
REDIRECT_HANDLER application/x-httpd-php5
HTTP_CONNECTION Keep-Alive
REQUEST_SCHEME https
REDIRECT_REDIRECT_HTTP_AUTHORIZATION
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
REDIRECT_URL /index.php
HTTP_ACCEPT_LANGUAGE en-US,en;q=0.5
PHPRC /var/www/agoratorgi.ru/data/php-bin-isp-php74
REDIRECT_SSL_TLS_SNI agoratorgi.ru
SERVER_PROTOCOL HTTP/1.1
REDIRECT_HTTPS on
HTTP_ACCEPT_ENCODING br,gzip
REDIRECT_STATUS 200
REQUEST_METHOD GET
REDIRECT_HTTP_AUTHORIZATION
SERVER_ADDR 188.225.38.154
SERVER_ADMIN webmaster@agoratorgi.ru
CONTEXT_PREFIX /php-bin/
PWD /var/www/php-bin-isp-php74/agoratorgi.ru/agoratorgi.ru
HTTPS on
SERVER_PORT 443
SCRIPT_NAME /index.php
SERVER_NAME agoratorgi.ru
ORIG_SCRIPT_FILENAME /var/www/php-bin-isp-php74/agoratorgi.ru/agoratorgi.ru/php
ORIG_PATH_INFO /index.php
ORIG_PATH_TRANSLATED /var/www/agoratorgi.ru/data/www/agoratorgi.ru/index.php
ORIG_SCRIPT_NAME /php-bin/php
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1739430636.536
REQUEST_TIME 1739430636
empty
0. Whoops\Handler\PrettyPageHandler