Обновление Virtuemart и Joomla

Поступил мне давеча заказ на обновление Joomla 1.0.13 и Virtuemart 1.0.8 до последних версий. Причем, и на сайте множество материалов, и в магазине куча товаров. Так как мне не доводилось до этого дня обновлять одновременно и то, и другое, я погуглил и нашел красивый мануал, оформленный в виде ролика-презентации (посмотреть). Скажу сразу: полная лажа. Презентация чудовищная, не предоставляющая никакой возможности понять ее правильно. Ну да ладно. Я все-таки попробовал.

Доктор готов препарировать Joomla и Virtuemart

Доктор готов препарировать Joomla и Virtuemart. Сестра, спирт и скальпель!

Обновление. Сумерки. Начало.

Для начала я сделал бекапы (back up, резервная копия) всех файлов и таблиц – на случай неудачного обновления – и попробовал делать все, как указано в ролике

  • Обновил Virtuemart до версии 1.1.0 (минимально поддерживаемая Joomla 1.5 версия магазина)
  • Установил компонент com_Migrator (Скачан 798 раз)
  • с его помощью сделал дамп необходимых для переноса данных таблиц
  • начал новую установку Joomla 1.5.15 (Скачан 701 раз) и на нужном шаге запустил "Migration Wizard", который подхватил сохраненный ранее дамп
  • скопировал таблицы Virtuemart в новую базу данных
  • скачал и установил компонент mtwMigrator
  • далее…. А далее начинается разброд и шатание в ролике-презентации, поэтому я действовал по интуиции.

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

После этого я решил сделать все сам, не опираясь на сомнительные руководства и ролики.

Обновление. Рассвет разума.

Итак, чтобы обновить до последних актуальных версий сайт на Joomla 1.0.x и магазин Virtuemart 1.0.х , делаем следующие шаги.

На этом моменте нужно остановиться поподробнее. Чтобы обновить VirtueMart линейки 1.0.х до линейки 1.1.х нужно из приведенного архива распаковать все файлы прямо в корень вашего старого сайта; с заменой. Сразу после этого идем в админку Joomla и заходим в управление магазином Virtuemart. Скрипт уже будет в курсе, что произошло что-то важное в его жизни, и возвестит о том, что нужно нажать большую зеленую кнопку для обновления таблиц в базе данных. Обязательно нажимаем эту кнопку. И не прерываем ни в коем случае процесс обновления!
Вот только после этого можно приступать к остальным шагам.

Теперь нам нужно поставить в отдельную папку свеженькую Joomla линейки 1.5.х (скачать Joomla 1.5.15 (Скачан 701 раз))
Устанавливаем ее, как буд-то хотим сделать совершенно новый сайт; то есть, никаких дампов не заливаем ни на каком шаге установки! Просто устанавливаем Joomla. Сразу же после успешной установки ядра заходим в админку сайта и устанавливаем Virtuemart 1.1.0 для Joomla 1.5 (скачать: VirtueMart 1.1.0 Joomla 1.5 (Скачан 707 раз)) Архив нужно распаковать; внутри вы найдете компонент и все необходимые модули и плагины. Устанавливаем сначала компонент, затем модули и плагины. Если при установке компонента вы получили ошибку "There was an error uploading this file to the server" (см.картинку),

There was an error uploading this file to the server

значит у вас на сервере выделено недостаточно памяти для загружаемых файлов. Лечится это довольно просто: нужно в файле htaccess в корне сайта прописать одну строку:

php_value upload_max_filesize 32M

После этого компонент должен стать без проблем.

Теперь можно установить языковой пакет, если вам это нужно. Строго говоря, это можно сделать и потом.

Сразу после этого устанавливаем компонент mtwMigrator и идем в меню Components – mtwMigrator на вкладку "Global Configuration", где заполняем все поля в соответствии с настройками базы данных старого сайта(!). Заполнили? Нажимаем большую зеленую кнопку "Check". Если вместо кнопки появится надпись "Joomla 1.0 Detected!", значит вы сделали все правильно и можно (и нужно) нажать кнопку "Save" справа вверху. Если же появилась какая-либо другая надпись, проверяйте параметры соединения с БД. Повторяю: здесь нужно вводить все параметры соединения с базой данных старого сайта.

После нажатия кнопки "Save" советую опять зайти во вкладку "Global Configuration" компонента mtwMigrator и убедиться в том, что введенные вами только что данные сохранились. Если вы опять видите пустые поля и кнопку "Check", значит запись в конфигурационный файл компонента не удалась (по причине отсутствия прав на запись, как правило). В этом случае вам нужно сменить права на файл /administrator/components/com_mtwmigrator/mtwmigrator_config.php , либо просто руками внести в него нужные значения. Как это сделать – отдельный разговор. Если кому-то будет интересно, помогу, обращайтесь.

Теперь нужно сообщить компоненту, что конкретно мы будем переносить из старого сайта.
Идем во вкладку "Global", где я советую поставить все радиокнопки в положение "yes". Исключение можно сделать только для пункта "Migrate Frontpage". Сохраняем конфигурацию нажатием кнопки "Apply" ("Применить").

И последняя вкладка – "3rd Extensions".
Собственно, тут получится активировать только компонент "Virtuemart", так как только он у нас на данный момент установлен. Позднее, если вы захотите перенести содержимое какого-либо другого компонента, присутствующего в списке, вы сможете установив необходимый компонент, здесь активировать его и совершить перенос.
Сохраняем конфигурацию нажатием кнопки "Save" ("Сохранить").

Кульминационный момент – нажимаем большую кнопку "Start Migration!" и, если на предыдущих шагах все было сделано верно, то через несколько секунд процесс завершится успешно. Различные неудачи как правило связано с неверным конфигурированием, но я готов помочь страждущим разобраться с ними.

Схвати удачу!Итак, теперь у нас есть Свежая Joomla и почти свежий Virtuemart с уже перенесенным со старого сайта содержимым. Осталось только обновить Virtuemart до последней стабильной версии (на данный момент это 1.1.4) и настроить все остальные параметры сайта и магазина.

Обновление Virtuemart

Напомню, что сейчас у нас стоит Virtuemart v.1.1.0 – продукт не первой свежести. Обновим его.

Качаем обновление Virtuemart 1.1.0 - 1.1.1 (Скачан 742 раз)
Можно воспользоваться штатным средством обновления (меню в Virtuemart "Check for Updates", вкладка "Upload a Patch") Но, как показал опыт, эта обновлялка часто отказывается работать по совершенно непонятным причинам. Поэтому не будет большого криминала, если мы извлечем из архива все файлы (все они будут внутри папки administrator) кроме "update.xml", так как он не содержит ничего интересного; и скопируем эти файлы прямо в корень сайта. Причем, при копировании скажем заменять существующие файлы новыми.
После этого идем в меню Virtuemart "Configuration" ("Конфигурация") и просто сохраняем текущее состояние.

И второй шаг – обновляем с версии 1.1.1 до последней на данный момент стабильной версии – 1.1.4 Скачать обновление Virtuemart 1.1.1 - 1.1.4 (Скачан 894 раз)
Производим те же самые действия, что и с прошлым пакетом обновления: разархивировать, скопировать в корень сайта с заменой и сохранить конфигурацию через меню магазина.
 Но на этом приключения не кончаются.

Доводка напильником

Так как Virtuemart – система сделанная по принципу "Строили сарай, а получился небоскреб", множество "костылей" системы преподносятся как "фичи" и частенько приходится доставать напильник и доводить систему до кондиции.
Сразу же после последнего обновления вы можете обнаружить, что ваш магазин просто лежит. Кроме того, может лечь даже весь сайт. А если включить отображение ошибок на сервере, то мы увидим фатал еррор (Fatal error: Call to undefined method ps_function::checkFuncPermissions()), который как бы говорит нам, что настало время собственноручно помочь слонику по кличке Virtuemart подняться.

Поднимаем Virtuemart

Открываем в блокноте (или в любом другом девелоперском редакторе, но только не в Ворде!) файл /components/com_virtuemart/virtuemart_parser.php и в строке номер 190 (или 193) находим такой код:

$funcParams = $ps_function->checkFuncPermissions( $func );

и меняем имя метода на getFuncPermissions. То есть, в результате должно получиться:

$funcParams = $ps_function->getFuncPermissions( $func );

Сохраняем файл, вздыхаем с облегчением. Самое смешное, что на заморских форумах люди встречались и с обратной ситуацией, когда для решения проблемы нужно было переименовать метод из getFuncPermissions в checkFuncPermissions.

Облегчение и релаксация

Ну, поздравляю вас! Вы справились и прошли этот квест! Теперь вам остались сущие пустяки – настроить по своему желанию сам Joomla-сайт, по желанию доустановить компоненты, модули, плагины, шаблоны и языки.

Желаю вам удачи в нелегком деле сайтостроительства и веб-предпринимательства!

Видео для релаксации после трудов праведных: Вампирское зеркало


Да, не тольков интернет-магазинах делаются деньги, но даже на приколах и розыгрышах.

Вы можете оставить комментарий , или использовать trackback - ссылки с вашего сайта.

34 комментария to “Обновление Virtuemart и Joomla”

  1. Уважаемые Alecfyz и участники обсуждения,

    Проконсультируйте по следующему вопросу:
    Обновлял VirtueMart ВМРЕ 1.0.12.1 stable по вышепредложенной инструкции – результат:

    1. До версии 1.0.15 обновился без проблем – все работает.
    2. При обновлении с версии 1.0.15 до версии 1.1.0 (файл VirtueMart_1.1.0_RC3-Manual_Installation_Package.tar) сайт лег. При этом админка Jommla грузится нормально, а при входе с неё в админку VirtueMart предлагает ссылку для обновления базы и просит удалить файл
    home/mobcomm/data/www/stroymarket.mobcomm.ru/administrator/components/com_virtuemart/install.php

    Далее, независимо от того, удаляю я этот файл перед нажатием ссылки обновления базы или нет, админка VirtueMart грузится с ошибками (иконки отсутствуют, ссылки на товары, категории и т.д. ошибочно выводят в админку Jommla), браузер внизу выдает иконку следующей ошибки:

    Агент пользователя: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
    штамп времени: Thu, 10 Nov 2011 06:42:55 UTC

    Сообщение: ‘Ext’ – определение отсутствует
    Строка: 214
    Символ: 1
    Код: 0
    URI-код: http://stroymarket.mobcomm.ru/administrator/index3.php?option=com_virtuemart&page=store.index&only_page=1&no_menu=1

    Как это исправить?

    • Alecfyz:

      Лучше распишите весь процесс (что делали) по шагам.
      Кроме того, советую включить отображение ошибок и посмотреть, на что идет ругань.

  2. Спасибо большое!!! Будем пробовать joomla 1.0.12 и Virtuemart 1.0.8 до последних версий

  3. Спасибо огромное за инструкцию!!!!!!!
    буду пробовать 1.1.6 -> 1.1.8 :-)

  4. [...] счет высокой распростарненности компонента VirtueMart новому redShop будет нелегко проложить себе путь на [...]

  5. Здравствуйте, админ. У меня к вам просьба. Могли бы вы мне помоч с миграцией со старого магазина на новый. О цене договоримся. Пишите на мыло. Спасибо.

    • Alecfyz:

      Давно уж жду от вас ответа в почте.

      • Уважаемый админ! Спасибо Вам за Вашу познавательную статью.
        Но хотелось бы, чтобы специалист занимался такими вещами.)))
        Если есть возможность свяжитесь со мной по вопросу обновления joomla и virtuemart. Спасибо!

  6. Здравствуйте!
    Проблема следующая при переносе VirtueMart 1.1.4 с Joomla 1.0 на 1.5 с помощью дампа базы sql После переноса не могу поменять название товара и его описания (новые значения сохраняются, но в итоге остаются прежними). Категории и подкатегории изменяются нормально…внешне перенесённая база выглядит нормально и без ошибок…как с этим можно справиться!? Да и кроме того не могу внести новый товар. При запросе UPDATE jos_vm_product SET product_desc =REPLACE(product_desc, », »); пишет ошибку #1054 – Unknown column ‘»’ in ‘field list’

    • Alecfyz:

      Странный у вас запрос «SET product_desc =REPLACE(product_desc, », »);»
      Поясните, что за запрос и откуда он взялся.

  7. Здравствуйте,
    не могу найти у вас на сайте ни одного контактного e-mail, если не сложно отпишите на адрес, который я указала. У меня финансовый вопрос по теме. Спасибо

  8. немного запутано написано..

  9. Всё проходит без ошибок. На этапе миграции – всё ОК. НО! Категории появились, а товары нет. База – около 16.000 товаров. Подскажите пожалуйста – в чём может быть проблема? Спасибо! Да! Я использовал последнюю версию мигратора – може поэтому? Что можно сделать сейчас? Спасибо!

    • Brankel:

      2. мы испробовали все известные науке способы миграции с джумла 1.0 на 1.5, НО ни один не подхватывал немыслимые таблицы VM весом в 2 (!) метра. их мы в итоге выдергивали из старой базы данных руками (в старой таблице от джумлы 1.0 нужно сделать экспорт таблиц jos_vm_product, jos_vm_product_type_1, jos_vm_product_type_2, в новой импорт получившегося файла)

      ниже я об этом писала уже =) такая же проблема была

      НО, при этом версия вм в месте из которого выдергивается и версия вм куда вставлять должна быть одна и та же.

      • Спасибо за ответ :-)
        Да, я уже и сам к этому пришёл. Только я все таблицы VM перенёс :)
        И ещё такая штука – когда на «старом» сайте VM обновил до 1.1.0 – главная страница «поплыла» , появились ошибки. Вход в админку – нормальный. Так должно быть?

        Critical: Theme file not found.

        Корзина

        Fatal error: Class name must be a valid object or a string in Z:\home\fosti\www\administrator\components\com_virtuemart\html\shop.basket_short.php on line 35

        • Brankel:

          Посмотрите в админке вм настройки – сайт, щаблон страницы, шаблон категории и страница товара, выберите там что нибудь в списке и сохраните. так как вы перенесли ВСЕ таблицы то перенеслись значения тем и шаблонов для отображения товаров со старой системы (в моем случае это был переход не только с вм 1.0 на на 1.1) но и переход с джумлы 1.0 на 1.5).
          как-то так.
          не надо было все таблицы копировать. замучаетесь значения на новые переделывать, не везде, но много где. ИМХО только таблицы с продуктами надо переносить дополнительно.

  10. Всё проходит без ошибок.
    На этапе миграции – всё ОК.
    НО! Категории появились, а товары нет. База – около 16.000 товаров.
    Подскажите пожалуйста – в чём может быть проблема?
    Спасибо!

    Да! Я использовал последнюю версию мигратора – може поэтому?

    Что можно сделать сейчас?

    Спасибо!

  11. Elza:

    Статья безусловно позновательная. Но – мне видимо както повезло, и я без проблем все перенесла (и статьи и магазин) с помошью мигратора ну и мелких там деталей (картинки кое где испортились в магазине)

  12. Alecfyz:

    2 Brankel
    Спасибо за развернутый отчет! Это полезно и познавательно. Но мне кажется, что некоторые проблемы у вас наблюдались из-за слишком затянутых гаек в конфиге php (или апача). Например, база в 2мб. с легкостью пережевывается и моим тестовым сервером, и боевым «шаровым» хостом. В остальном – надо разбираться, думать.

  13. Brankel:

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

    • Alecfyz:

      Так сказали бы, на какой файл шла ругань.

      • Brankel:

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

        • Alecfyz:

          Удачи в этом нелегком деле! :)

          • Brankel:

            Вы даже не представляете через сколько кругов ада пришлось нам пройти что бы сделать это! =) но победа есть!
            Несколько (?) багов с которыми мы столкнулись:
            1. в офисе какой-то дурной сервер/шлюз/роутер, не закачиваются ни по фтп (через пару дней он просто отвалился и не встал) ни по ссх файлы больше 100 кб, это мы сами не смогли побороть (такой цели и не было, чуть ковырнули и продолжили бороть VM), выход – работа в другом месте (дома, лежа на диване =), главное чтобы все файлы корретно закачивались и не возникало ошибок при загрузке! (лучше все таки заливать архив и распаковывать его на сервере)
            2. мы испробовали все известные науке способы миграции с джумла 1.0 на 1.5, НО ни один не подхватывал немыслимые таблицы VM весом в 2 (!) метра. их мы в итоге выдергивали из старой базы данных руками (в старой таблице от джумлы 1.0 нужно сделать экспорт таблиц jos_vm_product, jos_vm_product_type_1, jos_vm_product_type_2, в новой импорт получившегося файла)
            3. после обновления VM с версии 1.0.15 до 1.1.0 не сохранялись изменения в описании продукта, вм и джумла пишут что все сохранено, по факту изменений нет. оказалось что дело в странной обработке поля описание продукта (поле product_desc таблицы jos_vm_product) mysql при встрече с и , от греха подальше мы почистили весь хтмл код (достаточно убогий надо заметить, от предыдущих создателей сайта, понятно почему к их услугам больше не прибегли) но, слава роботам! не руками, в phpmyadmin достаточно исполнить следующие запросы:
            UPDATE jos_vm_product SET product_desc =REPLACE(product_desc, », »);
            UPDATE jos_vm_product SET product_desc =REPLACE(product_desc, », »);
            * _ перед исполнением подтереть
            в нашем случае запросов было около 50ти (странные тейблы с десятком модификаций, бэйсурл и ещё какая-то дребедедедень), цель была избавиться от всего хтмл-льно не нужного, в частности от модификаций этого п (p align=»center» и иже с ним), в итоге п из текстов никуда почему-то не делись (полагаю что мы охватили только часть мусора нашими 50ю запросами), но, о чудо! изменения стали сохраняться! =)
            4. не стоит при миграции с VM 1.1.1 на 1.1.4 копировать все содержимое предложенного архива, от копирования папок модулс и плагинс мы воздержались, после всех обновлений поставили через расширения-установить/удалить, зато оно КОРРЕКТНО работало (в предыдущих версиях с несохраняющимися изменениями модули и плагины мы копировали и как бы обновляли, но на сайте отображалось все очень криво)

            Понедельник, 4:35, сайт готов к рабочей неделе. в 7:00 будет звонить будильник, а в 8 офисная кофе-машина уже будет шкворчать мне кофе.
            Хорошо то, что хорошо кончается =)

          • Brankel:

            в пункте 3 имелся ввиду тег p, забили отключить интерпретацию.

  14. Alecfyz:

    Brankel, сочувствую. Скорее всего, вы непоследовательно что-то делали. Возможно, пропустили или нечетко выполнили какой-то из шагов.
    Если обновлена БД, то возвращать старые файлы бессмысленно, – они не смогут работать с новой БД. Лучше работать с новыми файлами и решать проблему исходя из той ошибки, которую вы поймали последней.

  15. Brankel:

    О май гат!
    при обновлении виртуамарт выскочило окно что нет какого-то нового файла, перезалили старые файлы виртуамарт, посыпалось просто все! кроме главной больше ни одна страница не загружается.
    трендец! теперь ночь не спать…

  16. Alecfyz:

    neyron, Всегда пожалуйста. Обращайтесь.

  17. Спасибо. За столь подробное разъяснение. В моём случае надо было поменять с \»get\» на \»check\» в virtuemart_parser.php.

Оставить комментарий

Читать RSS в Google

Добавить в Google Reader

Читать RSS в Яндексе

Добавить в Яндекс-ленту

Rambler's Top100