Чудеса обновления: DLcrumbs

Обновлял я ещё один сайт с 7.1.6, а на хостинге у них allow_url_fopen выключен, то есть прямо на хостинге через Installer не обновишь. А чтобы включили — надо в поддержку писать, ждать и т.д.

Поэтому решил скачать сайт, обновить у себя на OpenServer (Win 7) и закачать обратно.

Обновлял просто накатом файлов новой версии EVO на старую версию сайта, а потом в OpenServer'e набрал
http://ДОМЕН_САЙТА/install


Обновил, всё Ок, всё работает. Бодро закачал сразу на боевой хостинг, и…

Чудеса


… неувязочка вышла. Главная работает, а остальные вот такие:



Техподдержка хостинга ничего сказать не может, в «Просмотре событий» в Админке пусто, нигде ничего.

Я взял трубку Шерлока Холмса и применил метод дедукции.

  • чем остальные страницы отличаются от Главной?
  • чего нет на Главной, что есть на остальных?

Выкурив трубку, я понял — это DLcrumbs. Открыл его, а там:



Стал копать и выяснил: какой-то добрый дяденька переименовал DLcrumbs в DLCrumbs. Сменил малую букву «c» на большую «C» из чисто эстетических соображений.

А Виндовс по-своему относится к малым/большим буквам. И поэтому при накате файлов, несмотря на то, что я нажал «Заменить файлы», в папке DocLister остался файл со старым названием DLcrumbs, а новый не появился:



Я закачал все это на хостинг, а там Линух (CentOS), для которого «c» и «C» — разные символы.

И поэтому он не нашел файла DLCrumbs, и получился сниппет DLcrumbs с таким кодом:

<?php
File not found: assets/snippets/DocLister/snippet.DLCrumbs.php


И поэтому возникла ошибка 500.

Что в итоге


Пришлось переустановить DLсrumbs из Экстрас, и всё заработало.

Благо, что название сниппета в Админке не сменилось — ведь во всех шаблонах-то он у меня вызывается по старому имени DLcrumbs!

Но путаница все равно сохраняется — теперь в папке DocLister есть два сниппета — DLcrumbs и DLCrumbs.

К чему я всё это


Ребят, ну честно, какая была необходимость в этой правке? хорошо, что я упорный и опыт есть. А новичок просто плюнет и бросит Evolution.

И ещё. Там есть DLvaluelist и DLglossary. И они тоже переименованы.

13 комментариев

avatar
Заходим сюда:
github.com/evolution-cms/evolution/tree/develop/assets/snippets/DocLister

и видим что эту ошибку исправили еще 3 месяца назад. Когда я после теста 1.4.0RC ее словил.
avatar
Я скачивал 1.4.0 RC2 — именно с ней так получилось. Интересно, почему?
avatar
А, так это Develop — ветка. Я скачивал здесь github.com/evolution-cms/evolution/releases/tag/1.4.0.RC2

Думаете, все в курсе, что нужно качать с Девелоп?
avatar
Да RC с девелопа идут странно
avatar
И кстат, я не вижу, где там не исправлено — все так же. как и в RC.

Именно при таком раскладе и получается то, о чем я написал.
avatar
Девелоп-ветка идентична RC, и там будет такой же «эффект».
avatar
Ну смотрим тут:
take.ms/GWSc4
и тут:
take.ms/qVh5K

все совпадает

а названия файла в папке инстал не играет роли
avatar
Да, совпадает.

И поэтому при обновлении описанным мной способом (прямым накатом файлов новой версии на старую на компе с ОС Windows) будет то, что я описал выше.

а названия файла в папке инстал не играет роли

Ну как не играет, я ведь вышеописанную ситуацию не придумал.
Комментарий отредактирован 2017-11-29 10:43:13 пользователем Aharito
avatar
Ребят, ну честно, какая была необходимость в этой правке?

Была необходимость точно из-за какого-то изменения, может Дима помнит подробности.
avatar
Понял. Однако эта правка заставила-таки меня помучаться над разгадкой.
avatar
Андрей, огромное вам спасибо за этот топик, так как я поначалу думал, что либо я сошел с ума, либо окружающий мир :)

У меня история была похожей. Обновляю старый сайт на modx, но не старой версии, а одной из последних, обновление в данном случае вызвано глобальным редизайном сайта, ну и раз уж ввязался, то переписал все места со «старыми» сниппетами типа Дитто и бредкрабьс на новые в виде доклистера и производных от него, заодно личный кабинет на формлистере замутил… Скачал дампы к себе, развернул на ОпенСервере под Виндой, сделал, выкладываю его на хостинг на новый поддомен, и радостно обнаруживаю на отдельных страницах «белый экран». Подумал поначалу, что проблема как всегда с каким-нибудь кешированием на хостинге или версией PHP, прописал в htaccess всякие запреты «акселераторов», версию php проверил и сменил несколько штук — все бесполезно. Минут через 10 поисков/тестов вышел на сниппет DlCrumbs через просмотр отдельных страниц сайта, обнаружил в нем это самое «file not found» вместо кода сниппета. Думаю, мало ли, архив криво на хостинге распаковался или еще что, при этом нездоровое предвкушение, что раз подобная проблема случилась в одном файле — возможно ожидать ее и в других, и таким образом мне не известно состояние сайта на данный момент, так как я не знаю размера бедствия.
Пока думаю, почему так могло произойти — получаю предупреждение от хостинга о превышении дискового пространства. Думаю, вот оно, решение! :) Вычищаю лишние бекапы, добавляю на хостинге на время обновления сайта лишний гиг, снова распаковываю архив с файлами, снова получаю такую же проблему. На всякий случай перепаковываю архив другим архиватором, переношу снова — снова то же самое. Принимаю решение проверить все на другом хостинге, распаковываю эти же дампы — и снова проблема. Ну слава богу, не в распаковке файлов и не в повреждении архива, но тогда в чем? Начинаю исследовать код всяких плагинов и вообще всех мест, где может произойти запись в таблицу modx_site_snippets, но не нахожу, время на это трачу нерпилично много… Грешным делом подумываю, не внедрил ли я случайно в код сайта какую-нибудь стороннюю заразу — для этого делаю пофайловую сверку исходного дампа, обновленного сайта и старого сайта — действительно нахожу странность в различии регистра имени упомянутых файлов, но поначалу значения этому не придаю, убедившись, что под файлом действительно рабочий скрипт, а не какая-то маскирующаяся под известное имя сниппета хрень… И вот наконец-то сегодня нахожу этот пост, и все становится на свои места! :)
Автор, спасибо вам огромное, вы меня спасли от визита к психиатру :)
avatar
Я убил на разгадку сутки :) Самое интересно, что вот это:
File not found: assets/snippets/DocLister/snippet.DLCrumbs.php

не найти даже поиском по БД, потому что в БД стоит по-прежнему:
return require MODX_BASE_PATH.'assets/snippets/DocLister/snippet.DLCrumbs.php';

Просто он возвращает File not found.

Такая вот загогулина :)
avatar
На самом деле, офигенно хорошо, что разгадали. А то у меня на какое-то время червь сомнений зародился на тему того, что сайт вообще будет жить в данном виде. Учитывая, что это уже этап сдачи работ, было особенно тревожно :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.