Вы здесь

Обновление Drupal 7 до версии 7.50 и выше: «The following module is missing from the file system...»

squirrel and fir-coneВот и лето пролетело. Оглянуться не успели, на пороге уж… Осень. Время переобуваться, одевать шапочки и готовиться к холодам. Унылая пора, очей очарованья…
 
Система предупреждения давно уже спамит почтовый ящик с призывами вернуться, «взяться за голову», и разобраться со всем этим безобразием, а не то… «Не то» нам не надо, нам надо «то самое». А потому одним погожим днём свершилось чудо!
 
 
Т.к. я уже давно не баловал читателей ничем новеньким, вскользь сообщу, что в конце весны я всё-таки перевёл сайт c Drupal 6 на Drupal 7, много чего поправил, но ещё пока не сделал всего того, что планировал. Обновление шло очень сложно, т.к. я всё-таки не специалист и полный профан, но успешно, в отличие от некоторых, которые утверждали, что всё очень просто и можно сделать за пару вечеров.
 
Мне кажется, содержимое сайта, и он сам, не пострадали от перехода на 7-ую версию. А раз так, успех можно отметить. И, вполне возможно, я всё же найду время и выложу записки по многим каверзным особенностям перехода на «семёрку». И, хотя, нужной информации полно, мне пришлось собирать её «по крупицам», отжав тонны воды, перекопав тонны песка… Глядишь, кому-то пригодиться. :)
 
 
Это было отступление. И теперь вернёмся к обновлению 7.50. Само по себе оно ничем не отличается от других. Но, видимо тут разработчики решили навести порядок в базе данных. Не секрет, что ранее Друпал был несколько неряшлив в случаях установки и удаления различных настроек, при обновлении ядра, модулей, тем и библиотек.
 
После «экспериментов» в базе сайта часто оставались «хвосты» - таблицы и записи по несуществующим модулям… Накапливаясь, иногда они приводили к тому, что какие-то модули переставали работать или устанавливаться. Но чаще – при установке или обновлении возникали странные и непонятные ошибки, которые устранялись «танцами с бубном».
 
Теперь, по идее, такого не будет. Если, выполняя обновление, вы увидите сообщение, начинающееся фразой, вынесенной в заголовок – это будет означать, что программа обновления обнаружили проблемку с каким-то модулем и предлагает вам её решить. А тут уже ваше дело – проигнорировать или засучить рукава.
 
Предлагаю рассмотреть, с чем я столкнулся и что сделал. Это может быть полезным. Например, вот одно характерное сообщение:
 
·  User warning: The following module is missing from the file system: webfm_image. For information about how to fix this, see the documentation page. in _drupal_trigger_error_with_delayed_logging() (line 1128 of C:\Apache\Test.Ru\WWW\includes\bootstrap.inc).
·  User warning: The following module is missing from the file system: webfm_popup. For information about how to fix this, see the documentation page. in _drupal_trigger_error_with_delayed_logging() (line 1128 of C:\Apache\Test.Ru\WWW\includes\bootstrap.inc).
 
Понятно, что это обновление я сначала провёл локально (C:\Apache\Test.Ru). Считаю самым правильным подходом (как сделать локальную копию сайта): сначала тренируюсь на «кошках», а уже потом – на людях.
 
Дальше. Как мы видим, «ругань» идёт на модули «webfm_image» и «webfm_popup». Т.е., нам прямо подсказывают, что у нас «не так». И предлагают почитать «методичку».
 
Текст там на «забугорном» языке, и сводится к трём предложениям:
  • «забить» на такие сообщения, например, поставив модуль игнорирования сообщений при работе системы
  • переустановить проблемный модуль (заново установить, включить), а потом – снова отключить и удалить (в надежде, что теперь это произойдёт «чисто»)
  • или удалить запись о проблемном модуле (с помощью «Drush» или написанием некоего специального модуля).
 
Первый вариант – «не вариант». Предпочитаю сперва решать «мирным путём», а уже потом – объявлять «вендетту» и «37-ой год». Благо, в седьмой версии Друпала обновление теперь проводится много приятнее. Начинаем «договариваться». :)
 
Итак, возникла проблема с ранее удалённым модулем «WebFM» из Друпал версии 6. Прекрасно, «поднимаю» его из архива (а если вы не храните архивы своего сайта – можете заново скачать модуль) и кладу в папку «modules». У меня она здесь: «C:\Apache\Test.Ru\WWW\sites\all\modules».
 
Отвечаю на тут же возникающие вопросы.
  • Т.к. все эти модули ранее были преимущественно отключены и удалены, то они, скорее всего, тут же попадут в список модулей на удаление (у меня это:  http://test.ru/admin/modules/uninstall). Следовательно, можно просто подкладывать нужные каталоги модулей в папку, обновлять эту страницу, отмечать появившиеся модули и нажимать на «Uninstall».
  • Если ранее проблемный модуль русифицировался, повторную русификацию делать не надо (он же реально не будет работать).
 
Переходим на сайте (в режиме администрирования) в закладку удаления модулей. Отмечаем появившиеся «плохие» модули и нажимаем на «Uninstall». Переходим в файловый каталог и удаляем его там. Снова запускаем обновление и смотрим, что ещё осталось…
 
А у меня оставалось ещё много чего. Например, «ping» и «throttle». Что это, откуда «чудо» и что с ним «делать»? А это старые системные, уже несуществующие в Друпал 7, модули от Друпал 6. Что делать, что делать… Порезать бы вас всех, да возиться неохота! (с).
 
Беру старый архив своего сайта и из системного каталога «modules» (в «корне» сайта) внаглую копирую папки «ping» и «throttle» в обновляемый, т.е. в «C:\Apache\Test.Ru\WWW\sites\all\modules». Перехожу в закладку удаления модулей, обновляю её, в появившемся списке ставлю на эти модули «галочки» и удаляю их окончательно.
 
Дальше, чтобы отжать «воду», я переведу повествование в режим «проблема – решение». Т.к. всё будет очень похоже, но есть тонкости.
 
 
·  User warning: The following module is missing from the file system: imageapi.
·  User warning: The following module is missing from the file system: imageapi_gd.
·  User warning: The following module is missing from the file system: imageapi_imagemagick.
 
О, а это я уже когда-то экспериментировал в Друпал 7 с модулем «imageapi». Попался «гадёныш»! Кидаем его туда же, обновляем данные, ставим галочки, удаляем из списка модулей. А потом удаляем и из каталога.
 
·  User warning: The following module is missing from the file system: fckeditor.
 
Это «fckeditor» собственной персоной. Поступаем так же как с «webfm». При этом, сам редактор ставить не надо. Только модуль.
 
·  User warning: The following module is missing from the file system: default.
 
Очень интересно! Заходим в базу данных в таблицу «System» (я пользуюсь «SQL Manager for MySQL») и видим, что этот модуль находится в папке «profiles/default/default.profile» (данные о путях хранятся в поле «filename»). Кстати, это очень удобно, когда мы уже не помним, что, как и где было. Ага, это остаток моих экспериментов с профилями при инсталляции. «Поднимаю» «экспериментальный» архив и временно копирую нужную папку. Далее проделываем стандартную процедуру, по окончании которой её удаляем.
 
Теперь ещё один интересный вопрос. Как известно, в Друпал 7 имеются одноимённые модули, которые существовали в Друпал 6, например, «CCK». И старые версии вполне могут приносить ошибку. Как быть? Очень просто: я сделал копию модуля для «семёрки» (чтобы было что восстановить), скопировал в рабочий каталог модуль из «шестой» версии. Провёл вышеописанную стандартную процедуру по удалению модуля (или модулей, т.к. в «CCK» несколько подмодулей), и удалил каталог «CCK» полностью (лень разбираться, что там новое, а что старое). А на его место вернул ранее сделанную копию. Вот и всё!
 
Некоторые «плохие» модули не хотят удаляться из Друпал-списка модулей на удаление. Ничего страшного. Часто «пристрелив» какой-то другой модуль, «неудаляемый» модуль становится удаляемым. Например, у меня упорно не желал уйти в небытие «image_im_advanced» (из старого «Image»), но сдался после «казни» какого-то подмодуля «CCK».
 
Ещё совет, чуть не забыл: после ликвидации модуля (или группы модулей) не забывайте делать очистку кэша сайта (иногда там остаются «хвосты»). Это временами помогает справится с частью модулей, которые не хотят «зачищаться». А уже после этого, снова запускать «update.php».
 
Из дополнительных трудностей: чуток пришлось повозиться с модулем «nodewords». Упорно не хотел «уходить». Пришлось предварительно «прибить» (в базе данных) оставшиеся его одноимённые таблицы.
 
 
Вполне возможно что, что-то останется из «ошибочных» модулей… Но, тогда у нас есть «ручной» пулемёт вариант! – самостоятельно удалить в таблице «System» записи по всем оставшимся проблемным модулям (а если у модуля, типа «CCK», будут какие-то свои подмодули, их – тоже). Постарайтесь сделать это за один заход. Если при запуске «update.php», обновление найдёт «хвост» – оно его может снова восстановить.
 
Можно ли было сразу удалить из таблицы «System» все проблемные модули, а не пытаться их «восстанавливать» с последующим удалением? Да. Это было сказано в самом начале. Но, я предпочёл длинный путь, чтобы воспользоваться стандартным механизмом самоудаления. Если модуль может правильно удалиться, лучше воспользоваться его средствами, дабы он «зачистил» все свои «концы». И всё стало красиво!
 
А вы можете поступать, как вам удобно.
 
Удачи!
 
 

15.10.2016 г.          Карандаш.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer