Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "eval:
Недавно решил обновится до с 2.5.2 до 2.7.0 версии, PHP Version 5.4.45, обновилось все удачно, полез в админку и бац мне вылезло:
Начал копаться и наткнулся на
Временно нашел выход из ситуации, далее буду копать глубже, но пока можно исключить этот кусок кода из меню:
1.открываем .../manager/controllers/default/header.php строка 328
2. перед
— PHP Version 5.4.45
— MODX Revolution 2.7.0-pl
Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "eval:<li id="limenu-site" class="top"> <a hre..." on line 141 "});{/literal} ">Завершить все сеансы<span class="description">Завершить все сеансы работы пользователей и произвести принудительный выход из системы всех пользователей.</span>" - Unexpected " MODx.msg.confirm({ title: _('flush_sessions') ,text: _('flush_sessions_confirm') ,url: MODx.config.connector_url ,params: { action: 'security/flush' } ,listeners: { 'success': {fn:function() { location.href = './'; },scope:this} } });", expected one of: LITERALSTART , LITERALEND , LITERAL <-- thrown in .../core/model/smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 141Ну я пошел гуглить в чем проблема и наткнулся на эту тему, там проблему не решили, но в заголовке стоит «Решено».Начал копаться и наткнулся на
../manager/controllers/default/header.phpВ отладке я понял что ругается на код в атрибуте тэга onclick=«bla bla bla;»MODx.msg.confirm({
title: _('flush_sessions')
,text: _('flush_sessions_confirm')
,url: MODx.config.connector_url
,params: {
action: 'security/flush'
}
,listeners: {
'success': {fn:function() { location.href = './'; },scope:this}
}
});Синтаксис верен литеры стоят, но все равно ругается на }Временно нашел выход из ситуации, далее буду копать глубже, но пока можно исключить этот кусок кода из меню:
1.открываем .../manager/controllers/default/header.php строка 328
2. перед
$attributes .= ' onclick="{literal} '.str_replace('"','\'',$menu['handler']).'{/literal} "'; добавить if($menu["id"] == 'flush_sessions'){
$menu['handler'] = "";
}Итогif($menu["id"] == 'flush_sessions'){
$menu['handler'] = "";
}
$attributes .= ' onclick="{literal} '.str_replace('"','\'',$menu['handler']).'{/literal} "';Админка заработала— PHP Version 5.4.45
— MODX Revolution 2.7.0-pl
Комментарии: 23
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
При помощи отдельных компонентов? Опишите процедуру, пожалуйста.
После нахождения уязвимости в 2,6,4 я обновил около 30 своих сайтов до версии 2,6,5 при помощи upgradeMODX без проблем. Причем некоторые версии были очень старыми.
А вот при попытке обновить с 2,6,5 до 2,7,0 каждый второй сайт «ложится полностью» — белый экран у админки и у фронтенда.
Был бы это 1-3 сайта, то был бы смысл.
Я считаю, что обновление это — улучшение, а если оно приводит к таким проблемам, то ну его.
Если найду свободное время (ха ха) то может и попробую еще раз. А может и нет. Поглядим)
Потому что приводить в полную негодность рабочий сайт на продакшене, для того чтобы потом лезть в логи и искать в чем же проблема — как-то неправильно.
Отчего может ложиться фронт после обновления немного непонятно. Обновил больше уже больше 50 сайтов через simpleUpdater, причём на совершенно разных хостингах, никаких проблем не возникло.
Но могу сказать о себе — я обновляю компоненты только на тех сайтах, которые сделал от начала до конца сам. Но к сожалению, мы берем на обслуживание и сайты, которые прошли через 20 рук и кто там что чудил — сложно даже представить.
очень много раз сталкивался с тем, что обновление компонентов на таких сайтах приводило к ужасным проблемам, потому что разработчиками правились файлы компонентов напрямую, искажалась логика работы и так далее и соответственно обновление все это стирает и сайт полностью не работает.
2.7 => 2.7.1 => 3.x
Внизу написаны минимальные требования
тяжело конечно с госами… но понимайте, что в будущем(может через пол года) уже расходится будут и костыли могут не помочь.
Вариант, указанный в качестве временного решения конечно работает, но в моём случае помогло выключение описания пунктов верхнего меню.
Параметр topmenu_show_descriptions
В описании какого именно пункта скрывается проблема я не выяснял.