No valid context specified Решено

Дополнение: ms2Gallery, modhost.pro, Redirector

Короче намудрил я с контекстами.

У меня в одной админке несколько сайтов по контекстам разбросано. Всё работало, кроме загрузки фотографий в ms2Gallery — при загрузке к картинкам добавлялся путь /en/assets вместо /assets/.

Решил я исправить это дело и начал копаться во всём, до чего смог дотянуться: удалил Redirector, переустанавливал и обновлял приложения — ничего не помогало…

Ну в общем я решил заменить ключи контекстов с site-name-ru на site_name_ru — вот тут-то и начались танцы с бубном…

Админка это делать не позволяет, поэтому полез в базу. Пришлось найти абсолютно все совпадения с ключём контекстов во всех таблицах и заменить их на правильные. Всё заменил, но…

Проблема: сейчас в дереве ресурсов админки переименованные контексты не раскрываются, как будто в них нету ресурсов.
  • Чистка кэша, сессий и всего прочего не помогла. context_key у ресурсов понятно уже новый и соответствуют ключу контекстов.
  • При создании нового ресурса в этих контекстах — ресурс создаётся, но в дереве не показывается.
  • При заходе на эти сайты белая страница, а в логи сыпится следующая ошибка:
    [2016-09-06 09:32:37] (ERROR @ /home/s***/www/core/model/modx/modx.class.php : 2302) No valid context specified: ****_***_ru
    
  • Сайты на модхосте.
Итого: была одна проблема (с путями ms2Gallery), а стало две.

Как заставить систему понимать переименованные контексты?

UPD. Вопрос решен, смотри комментарий Василия
06 сентября 2016, 09:49    Василий Столейков   G+  
2    321 0

Комментарии (13)

  1. Василий Столейков 06 сентября 2016, 09:57 # 0
    Да, и обновление системы через панель хостинга тоже не помогает. Сейчас попробую вручную обновить…
    1. Василий Наумкин 06 сентября 2016, 10:00 # +1
      Если у твоего контекста базовый url с /en/, то почему его не должно быть у картинок, которые в нём выводятся?

      Верни всё как было и поищи в гугле правила rewrite для nginx, чтобы по адресу /en/assets тебе отдавался контент из /assets. Это гораздо проще и правильнее, чем ты уже сейчас намудрил.

      Ах, да, еще можно вообще тупо убирать /en у картинок при выводе в чанке, фильтром replace.
      1. Василий Столейков 06 сентября 2016, 10:14 # 0
        Если у твоего контекста базовый url с /en/, то почему его не должно быть у картинок, которые в нём выводятся?
        У меня в абсолютно всех контекстах base_url == "/". В каком-то контексте по ошибке было /en/, но я это исправил, а глюки остались, хотя и кэш чистил, и админку обновлял и всё такое…

        Верни всё как было и поищи в гугле правила rewrite для nginx
        Спасибо за дельный совет! Не подумал сразу…

        еще можно вообще тупо убирать /en у картинок при выводе в чанке, фильтром replace.
        Но этого не сделаешь для превьюшек в админке. Кстати, это касается и miniShop2 — там точно такая же проблема…
        1. Василий Наумкин 06 сентября 2016, 10:40 # +1
          Ну тогда rewrite должен решить все твои проблемы.
          location ~* ^/en/assets/images/ {
              rewrite	^/en/assets/images/(.*)    /assets/images/$1 permanent;
          }

          Кстати, можно сделать еще круче — без редиректа, а просто подставляя нужную директорию, вот так:
          location ~* ^/en/assets/images/(.*) {
              alias /полный_путь_к_файлам_от_корня_сервера/assets/images/$1;
          }
          
          1. Василий Столейков 06 сентября 2016, 10:46 # 0
            Спасибо за пример!!! Сделаю это сразу после откатки бэкапа, сейчас проверяю ещё кое-что.
            P.S. Оффтоп: на модхост будет добавляться MODX 2.5.1 или он ещё глючный? Просто там вроде как с адаптивом всё в порядке уже…
            1. Василий Наумкин 06 сентября 2016, 10:47 # +1
              Там много жалоб на TinyMCE и работу phpThumb.

              Попробую включить, посмотрю на отзывы.
              1. Василий Столейков 06 сентября 2016, 10:48 # 0
                Ок, спасибо!
            2. Василий Столейков 06 сентября 2016, 16:38 # 0
              Не помогает ни первый, ни второй варианты с nginx… буду думать дальше…
              1. Василий Наумкин 06 сентября 2016, 17:02 # +1
                Да не может такого быть. Я же проверил и первый и второй вариант, прежде чем писать готовое решение.

                Скорее всего у тебя там брузер что-то закэшировал. Пиши в поддержку хостинга, говори какой сайт и какие адреса куда отправить.
                1. Василий Столейков 06 сентября 2016, 19:49 # 0
                  Скорее всего у тебя там брузер что-то закэшировал
                  Пробовал на разных браузерах и разных компах.

                  Вообще, ради эксперимента я:
                  • удалил все контексты кроме web,
                  • удалил все кастомные настройки контекста web,
                  • удалил все страницы кроме главной,
                  • удалил все дополнения, кроме ms2Gallery,
                  • удалил все плагины кроме ms2Gallery,
                  • сменил link_tag_scheme на full, как советовал Владимир чуть ниже (было -1)
                  И после каждого действия, после каждого удалённого приложения я очищал кэш и проверял загрузку в разных браузерах и компах.

                  Но проблема осталась!!! При загрузке к картинке добавляется /en/ перед /assets/.

                  Под конец, уже взял и переустановил сайт подчистую через панель хостинга — только после этого заработала загрузка…

                  Откатил все мои изменения из бэкапа и вернул старый добрый полурабочий сайт.

                  Пиши в поддержку хостинга
                  Напишу в поддержку хостинга, если не получится, буду переносить сайт на чистую установку вручную (таблицами)…
                  1. Василий Наумкин 07 сентября 2016, 07:43 # +2
                    Проблема в настройке base_url для группы пользователей.

                    Если её убрать и перелогиниться, то картинки грузятся нормально.
                    1. Василий Столейков 07 сентября 2016, 07:50 # 0
                      О спасибо вам большое! Мне казалось что мистика какая-то творится на сайте…
                      Для меня это просто чудо. И как всегда самое непонятное лежит на самом очевидном месте…
                      Вопрос решен, благодаря отзывчивой техподдержке хостинга modhost.pro, а в частности тебе, Василий!
          2. Владимир 06 сентября 2016, 18:58 # +1
            Извиняюсь, на влезу в вашу беседу. Я указал домен в системной настройке Override Cache URL phpthumbof.cache_url phpthumbof.cache_url site.tld и в pThumb Cache Location pthumb.ptcache_location/assets/image-cache, и нет у меня в путях картинок /en/. Схема URL link_tag_scheme full Это все решило полностью. Все картинки не зависят от контекста.
          Вы должны авторизоваться, чтобы оставлять комментарии.