REVO - ошибка 500 после смены шаблона у ресурса

Всем привет!

Имею на вооружении Revo 2.3.1-pl. Со вчерашнего вечера наблюдается проблема отображения некоторых ресурсов, которым при редактировании был сменен шаблон, выставленный ранее.
При попытке просмотреть такие ресурсы мы видим белый экран, как-будто шаблон пустой.

В консоли браузера имеем следующий лог:

Failed to load resource: net::ERR_CACHE_MISS

При просмотре HTTP-заголовков в консоли во время обращения к проблемным ресурсам видим следующее:

Request Method: GET
Status Code: 500 Internal Server Error

В логах Modx /core/cache/logs пусто.
Полная очистка кэша как через админку, так и путем очистки директории /core/cache/
ни к чему не приводит.

Подчеркиваю, что проблема только для некоторых ресурсов, и вне зависимости от шаблона.
Выявлено только, что если вернуть все к прежнему состоянию, то бишь указать предыдущий шаблон ресурсу — все ОК.

Есть предположение, что проблема возникла после того, как был отредактирован один из шаблонов, который уже был назначен ресурсу.

Закономерность так и не выявил, т.к. назначив ресурсу другой шаблон, который не редактировался ошибка не исчезает.

Ресурсы и шаблоны могут быть разные, однако опять же для каких-то все проходит ОК, а для каких-то нет…

Хостер — FastVPS.
Перезапуск сервера также ничем не помог.

Подскажите, в чем может быть проблема? С чего начать копать?
Буду весьма благодарен!
Алексей Вахрамеев
06 ноября 2014, 12:31
modx.pro
6 211
0

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

Алексей Ерохин
06 ноября 2014, 17:01
1
+1
500 ошибка в логах веб-сервера.
Ошибки синтаксиса в php, попытка подключить несуществующий файл, работа с объектом, которого нет и т.п.
    Алексей Вахрамеев
    06 ноября 2014, 17:07
    0
    Да, но тем не менее должно быть странным, что до этого все было норм.
    В шаблонах производились правки только по добавлению чанков, и то только в одном.
    А ошибка появляется даже когда другой шаблон подключаешь к ресурсу, не обязательно тот, в котором до этого производились правки.

    К тому же сам Modx ничего в логах не пишет…
      Алексей Ерохин
      06 ноября 2014, 17:08
      0
      Так чего Вы гадаете то? В логи посмотрите.
        Алексей Вахрамеев
        06 ноября 2014, 17:31
        0
        в том то и дело, что логи пока только в консоли браузера, и их я перечислил. В логах Modx пусто.
        Придется искать в логах Apache…
    Василий Наумкин
    06 ноября 2014, 22:15
    0
    Очевидно, в шаблоне есть какой-то глючный сниппет.

    Нужно найти и починить.
      Алексей Вахрамеев
      07 ноября 2014, 09:40
      0
      Есть вероятность, что какой-то общий глюк имеется во всех шаблонах, т.к. пробовал просто очистить шаблон — все ОК. Пытаюсь назначить другой с похожим набором сниппетов — ошибка опять появляется. Однако почему-то для ряда других страниц те же шаблоны ошибку не вызывают… Странно все это.

      Буду вылавливать бяку, о результатах отпишусь.
      Спасибо!
      Алексей Вахрамеев
      08 ноября 2014, 01:27
      0
      Ура, товарищи! Свершилось чудо!

      Удалось таки выявить «коротыш» в цепи)

      Источником проблемы оказался самопальный сниппет [[myId]], суть которого — вывод [[*pagetitle]] родительского
      контейнера в текущем дочернем документе, служащего заголовком меню из соседних ему документов.

      Собственно вот он:

      $parent = $modx->getObject('modResource',$input);
      $doc = $parent ->get($options);
      return $doc;
      Вызов из шаблона:

      [[*parent:myId=`pagetitle`]]
      Ошибка появлялась тогда, когда шаблон, содержащий вызов такого сниппета, был назначен документу,
      не имеющего родителей. Убрал вызов — все ОК, ошибки нет.

      Всем большое спасибо!
        Василий Наумкин
        08 ноября 2014, 05:25
        2
        +1
        Именно поэтому всегда нужно делать так:
        $doc = '';
        if ($parent = $modx->getObject('modResource', $input)) {
        	$doc = $parent->get($options);
        }
        return $doc;
      Антон
      21 ноября 2014, 13:53
      0
      Алексей, у меня судя по всему подобная проблема, буду очень благодарен если ответите на пару вопросов в скйпе: waterspb1990
        igor
        29 ноября 2014, 18:26
        0
        а у меня такой сниппет аналогичный
        $resource = $modx->getObject('modResource', $id);
        $rez_fild = $resource->get($fild);
        return $rez_fild;
        преобразование его в
        $rez_fild='';
        if ($resource = $modx->getObject('modResource', $id)) {
        	$rez_fild = $resource->get($fild);
        }
        return $rez_fild;
        подобную ошибку не удалило
        что нетак?
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          11