Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "eval:

Недавно решил обновится до с 2.5.2 до 2.7.0 версии, PHP Version 5.4.45, обновилось все удачно, полез в админку и бац мне вылезло:
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
vectorserver
23 января 2019, 09:39
1
675
0

Комментарии: 21

Yar
Yar
23 января 2019, 11:06
0
Вы не первый, кто жалуется на версию 2.7.0 — поэтому от обновления я пока воздержусь. До версии 2.7.2, например…
    Rootiys
    23 января 2019, 22:29
    +3
    Обновил до 2.7 32 сайта, никто не жалуется.
      Александр Мельник
      26 января 2019, 13:15
      0
      А как обновляете?
      При помощи отдельных компонентов? Опишите процедуру, пожалуйста.
      После нахождения уязвимости в 2,6,4 я обновил около 30 своих сайтов до версии 2,6,5 при помощи upgradeMODX без проблем. Причем некоторые версии были очень старыми.
      А вот при попытке обновить с 2,6,5 до 2,7,0 каждый второй сайт «ложится полностью» — белый экран у админки и у фронтенда.
        vectorserver
        27 января 2019, 11:29
        0
        В логах что пишет?
          Александр Мельник
          27 января 2019, 18:02
          0
          Все сайты на 30 разных серверах и смотреть логи каждого из сервера я не стал.
          Был бы это 1-3 сайта, то был бы смысл.
          Я считаю, что обновление это — улучшение, а если оно приводит к таким проблемам, то ну его.
          Если найду свободное время (ха ха) то может и попробую еще раз. А может и нет. Поглядим)
          Потому что приводить в полную негодность рабочий сайт на продакшене, для того чтобы потом лезть в логи и искать в чем же проблема — как-то неправильно.
            Андрей
            27 января 2019, 18:15
            0
            Админка может ложиться из за UpgradeModx, на нескольких сайтах было подобное, в первую очередь стоит обновлять компоненты до последних версий, а после уже движок.

            UpgradeMODX 2.0.3-pl
            Fix bug with possible 500 error in PHP 5
            Отчего может ложиться фронт после обновления немного непонятно. Обновил больше уже больше 50 сайтов через simpleUpdater, причём на совершенно разных хостингах, никаких проблем не возникло.
              Александр Мельник
              27 января 2019, 18:21
              0
              Вы правы наверное, насчет обновления компонентов.
              Но могу сказать о себе — я обновляю компоненты только на тех сайтах, которые сделал от начала до конца сам. Но к сожалению, мы берем на обслуживание и сайты, которые прошли через 20 рук и кто там что чудил — сложно даже представить.
              очень много раз сталкивался с тем, что обновление компонентов на таких сайтах приводило к ужасным проблемам, потому что разработчиками правились файлы компонентов напрямую, искажалась логика работы и так далее и соответственно обновление все это стирает и сайт полностью не работает.
              Это сообщение было удалено
                Это сообщение было удалено
                  Это сообщение было удалено
                    Это сообщение было удалено
                      Это сообщение было удалено
                      Это сообщение было удалено
                      Это сообщение было удалено
      Иван Бочкарев
      27 января 2019, 11:19
      0
      2.7.2 не будет =).

      2.7 => 2.7.1 => 3.x
    Даниил Рачин
    23 января 2019, 18:05
    0
    А разве 2.7.0 работает на php 5.4? Если есть возможность, обновите версию php хотя бы до 5.6, а лучше до 7. Возможно, поможет.
      vectorserver
      23 января 2019, 18:34
      0
      Работает на 5.4, обновить возможности нет, тк сервер государственный, а там на мой вопрос об обновлениях, сказали что это опасно для других ресурсов. Вот и пришлось костыль вставлять.
        Константин Ильин
        23 января 2019, 23:07
        0
        modx.com/download

        Внизу написаны минимальные требования

        Minimum Recommended PHP Latest 5.5.x
        тяжело конечно с госами… но понимайте, что в будущем(может через пол года) уже расходится будут и костыли могут не помочь.
    Иван Бочкарев
    27 января 2019, 11:22
    0
    @vectorserver Перенесите данный пост из Готовых решений в Вопросы!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.