首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PrestaShop错误500 PREG_BACKTRACK_LIMIT_ERROR

PrestaShop错误500 PREG_BACKTRACK_LIMIT_ERROR
EN

Stack Overflow用户
提问于 2018-03-06 03:28:26
回答 1查看 244关注 0票数 0

我对PrestaShop的网站有个问题。在我将产品添加到比较中并跟随指向page的链接后,它显示500服务器错误。在服务器日志中:

代码语言:javascript
复制
ERROR: PREG_BACKTRACK_LIMIT_ERROR in function packJSinHTML, referer: https://svdd.ru/products-comparison

PHP Notice:  Undefined index: search_query in /var/www/svddru/data/www/svdd.ru/cache/smarty/compile/9e/0b/2e/9e0b2eed3cabe548854f824a36411cf7b41c2feb.file.blocksearch-top.tpl.php on line 37, referer: https://svdd.ru/products-comparison

PHP Notice:  Trying to get property of non-object in /var/www/svddru/data/www/svdd.ru/cache/smarty/compile/9e/0b/2e/9e0b2eed3cabe548854f824a36411cf7b41c2feb.file.blocksearch-top.tpl.php on line 37, referer: https://svdd.ru/products-comparison

PHP Notice:  Undefined index: ajax_allowed in /var/www/svddru/data/www/svdd.ru/cache/smarty/compile/ed/74/9d/ed749d2af11acf978d4f6deb923e55d40a3b9d12.file.blockcart.tpl.php on line 86, referer: https://svdd.ru/products-comparison

PHP Notice:  Trying to get property of non-object in /var/www/svddru/data/www/svdd.ru/cache/smarty/compile/ed/74/9d/ed749d2af11acf978d4f6deb923e55d40a3b9d12.file.blockcart.tpl.php on line 86, referer: https://svdd.ru/products-comparison

PHP Fatal error:  Cannot use object of type Product as array in /var/www/svddru/data/www/svdd.ru/cache/smarty/compile/ed/74/9d/ed749d2af11acf978d4f6deb923e55d40a3b9d12.file.blockcart.tpl.php on line 121, referer: https://svdd.ru/products-comparison

在控制台日志中:

代码语言:javascript
复制
jquery-1.11.0.min.js:169 Uncaught ReferenceError: FancyboxI18nClose is not defined at HTMLDocument.<anonymous> (jquery-1.11.0.min.js:169) at j (jquery-1.11.0.min.js:2) at Object.fireWith [as resolveWith] (jquery-1.11.0.min.js:2) at Function.ready (jquery-1.11.0.min.js:2) at HTMLDocument.K (jquery-1.11.0.min.js:2)

快一个月了,我都搞不懂出了什么问题。提前感谢您的回复!

EN

回答 1

Stack Overflow用户

发布于 2018-03-06 18:42:34

此函数会抛出此错误:

代码语言:javascript
复制
public static function packJSinHTML($html_content)
{
    if (strlen($html_content) > 0) {
        $html_content_copy = $html_content;
        if (!preg_match('/'.Media::$pattern_keepinline.'/', $html_content)) {
                $html_content = preg_replace_callback(
                Media::$pattern_js,
                array('Media', 'packJSinHTMLpregCallback'),
                $html_content,
                Media::getBackTrackLimit());

            // If the string is too big preg_replace return an error
            // In this case, we don't compress the content
            if (function_exists('preg_last_error') && preg_last_error() == PREG_BACKTRACK_LIMIT_ERROR) {
                if (_PS_MODE_DEV_) {
                    Tools::error_log('ERROR: PREG_BACKTRACK_LIMIT_ERROR in function packJSinHTML');
                }
                return $html_content_copy;
            }
        }
        return $html_content;
    }
    return false;
}

问题似乎是内容对于preg_replace来说太大了。因此您可以尝试将pcre.backtrack_limit值增加到1000000000

您还可以覆盖此函数并注释掉以下行:

代码语言:javascript
复制
if (_PS_MODE_DEV_) {
    Tools::error_log('ERROR: PREG_BACKTRACK_LIMIT_ERROR in function packJSinHTML');
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49118028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档