Права доступа? Настройки сервера?
Друзья мои!
Первым делом хочу извиниться, если задача тривиальна и можно сделать вывод, что я недостаточно приложил усилий для самостоятельного поиска решения (уверяю, это не так: )))
Дело в том, что сайт работает нормально.Так, как от него ожидаешь. Но только до тех пор, пока не открываешь вкладку в режиме «инкогнито» или тупо разлогиниваешься. Вот тут начинается что-то странное. На ряде страниц — белый экран с пустым исходным кодом. Где-то отдаётся resource.content, где-то грузится полностью за исключением пары чанков.
Собственно, несколько дней гуглил, копался в компонентах, экспериментировал с политиками доступа, пытался понять логику и пришёл к выводу, что загвоздка вероятнее всего возникает где-то на уровне прав (картинки это подтверждают).


Я подозреваю, что сниппеты и другие элементы тупо не хотят отрабатывать для неавторизованных пользователей (и более того, когда пытался найти причину глубже, $modx->getObject возвращал null там, где авторизованный пользователь получал нормальный объект (msProducts, в частности))
В общем, у кого было подобное, покажите путь, куда копать.
Заранее спасибо откликнувшимся и пардон, если не вполне доходчиво описал суть)
Первым делом хочу извиниться, если задача тривиальна и можно сделать вывод, что я недостаточно приложил усилий для самостоятельного поиска решения (уверяю, это не так: )))
Дело в том, что сайт работает нормально.Так, как от него ожидаешь. Но только до тех пор, пока не открываешь вкладку в режиме «инкогнито» или тупо разлогиниваешься. Вот тут начинается что-то странное. На ряде страниц — белый экран с пустым исходным кодом. Где-то отдаётся resource.content, где-то грузится полностью за исключением пары чанков.
Собственно, несколько дней гуглил, копался в компонентах, экспериментировал с политиками доступа, пытался понять логику и пришёл к выводу, что загвоздка вероятнее всего возникает где-то на уровне прав (картинки это подтверждают).


Я подозреваю, что сниппеты и другие элементы тупо не хотят отрабатывать для неавторизованных пользователей (и более того, когда пытался найти причину глубже, $modx->getObject возвращал null там, где авторизованный пользователь получал нормальный объект (msProducts, в частности))
В общем, у кого было подобное, покажите путь, куда копать.
Заранее спасибо откликнувшимся и пардон, если не вполне доходчиво описал суть)
Комментарии: 15
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Политика доступа: Load Only: только load. yadi.sk/i/sVtvWtzFoACVIw
Больше на группу аноним в правах ничего не настроено. Хотя по идее для работы сайта нужно Load, List and View, почему-то аноним, обычно, прекрасно, работает с Load Only.
Проверь чтоб у группу аноним стояло Load Only. Если настройки от дефолтных не отличаются, пробуй очистить кеш, удалить все из папки core/cache. Затем попробуй развернуть копию сайта на другом хостинге. Возможно он виноват.
В общем, настройки политики у меня ровно такие же, как на твоём скриншоте (хотя пробовал разные комбинации). Кор/кэш чистил, разумеется, неоднократно, результата, увы, не даёт.
В плане хостинга тоже маловероятно, т.к. на локалке у меня тоже такое было (да и всё-таки хоть какое-то логичное объяснение быть должно).
Может есть ещё предположения?
Открываешь D:\OpenServer\domains\modx.loc\core\xpdo\xpdo.class.php и на строке 840 находишь
добавляешь
Смотришь по логу что отдало null. Затем, если в логе «instance », то есть $instance = null, ищешь public function call выясняешь что эта функция вызывает и т.д.
Муторно. Долго. Но иного способа нет. Зато больше понимания как modx работает :-).
Там логов полно, но на debug уровне. То есть, в системных настройка ставим log_level = 4 и смотрим что происходит.
но что есть principal 0?
То есть 0 это просто id юзера.
Скорее всего валится на $instance->checkPolicy('load').
Открываем core\model\modx\modsnippet.class.php. Там ничего такого нет но class modSnippet extends modScriptВообщем участвуют 2 метода
modaccessibleobject.class.php
и modelement.class.php
В modaccessibleobject.class.php после $policy = $this->findPolicy(); строка 219 вставляем
Прогружаем страницу и смотрим лог.
вот часть распечатанного дампа…
<cut/>
Ищите в логе Principal 0 does not have permission to load object of class modSnippet и сюда часть рядом с ними. Если рядом массивов нет, то не прогружается сессия.
+ про сессии он тож чот писал
У меня лог
modAccessCategory не к сниппетам относятся вроде
давайте пощадим сюда зашедших))
Она по идее должна быть пустой. Если там что-то есть, то вы наверно доступ манагерам к категориям элементов ограничивали. То есть, кому-то дали права а остальным облом. В том числе и анонимам. Если я, конечно, верно код интерпритировал. Доступ к категориям редактируется здесь yadi.sk/i/4CM-C0bYWRRFjg
Если у кого-то доступ настроен, то надо и анонимам сделать аналогично. Только контекст на web поменять.
очистка таблицы решила проблему, но тем не менее надо бы разобраться, как правильно назначать права контент-менеджерам, но уж с этим как-нибудь, думаю, разберусь))
А нет у нас
и yadi.sk/i/LxtgR47-77XUMg
То есть, сессия не прогружается и права false.
В modsessionhandler.class.php после $this->session= $this->modx->getObject('modSession', array('id' => $id), $this->cacheLifetime); строка 159 ставим