X

Magento 2: Please update your modules: Run "composer install" from the Magento root directory.

Столкнулся с такой ситуацией, когда версия дампа старше версии кодовой базы. В итоге при попытке запуска Magento 2 получил ошибку

Exception #0 (Magento\Framework\Exception\LocalizedException): Please update your modules: Run "composer install" from the Magento root directory.
The following modules are outdated:
Magento_Cron db schema version: defined in codebase - 2.0.0, currently installed - 2.0.0.1Magento_Cron db data version: defined in codebase - 2.0.0, currently installed - 2.0.0.1
Vendor_AbstractEntityData db schema version: defined in codebase - 1.1.9, currently installed - 1.2.0
Vendor_AbstractEntityData db data version: defined in codebase - 1.1.9, currently installed - 1.2.0

Усугубляло это еще то, что я использовал PHP 7.2, и при попутке запустить рекомендуемый composer install я получал сообщение о не поддерживаемой версии php..

$ composer install

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - colinmollenhour/php-redis-session-abstract v1.3.4 requires php ~5.5.0|~5.6.0|~7.0.0|~7.1.0 -> your PHP version (7.2.17) does not satisfy that requirement.
    - colinmollenhour/php-redis-session-abstract v1.3.4 requires php ~5.5.0|~5.6.0|~7.0.0|~7.1.0 -> your PHP version (7.2.17) does not satisfy that requirement.
    - Installation request for colinmollenhour/php-redis-session-abstract v1.3.4 -> satisfiable by colinmollenhour/php-redis-session-abstract[v1.3.4].

ну Ок, мне по прежнему лень даунгрейдить PHP.. Вариант №1, отрубаем проверку версий вот тут:

/vendor/magento/framework/Module/Plugin/DbStatusValidator.php

вот так

    public function beforeDispatch(FrontController $subject, RequestInterface $request)
    {
..
            if ($versionTooHighErrors) {
$this->cache->save('true', 'db_is_up_to_date');
return;
                $message = 'Please update your modules: '
                    . "Run \"composer install\" from the Magento root directory.\n"
                    . "The following modules are outdated:\n%1";
                throw new LocalizedException(
                    new Phrase($message, [implode("\n", $this->formatVersionTooHighErrors($versionTooHighErrors))])
                );
...

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

В общем, правим так, попросту игнорируя ошибки и все начинает работать..

Но, есть и другой способ, вычленяем название модулей и их версии из текста ошибки, у меня это

Magento_Cron = 2.0.0; currently installed - 2.0.0.1
Vendor_AbstractEntityData = 1.1.9; currently installed - 1.2.0
Vendor_AbstractEntityData = 1.1.9, currently installed - 1.2.0

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

Например для модуля Magento_Cron ставим "2.0.0" вместо "2.0.0.1", было

Версия Magento_Cron

стало

Модуль Magento_Cron

Повторяем для всех упомянутых в ошибке.

После этих манипуляций все начинает работать.

Категории: Magento