Версия установки Magento2 для модуля не указана

24

Я установил локальную копию Magento 2. У меня проблема с пользовательским модулем.

Я следовал следующей структуре файла / папки

app/code/Ps/HelloWorld/etc/module.xml:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
    <module name="Ps_HelloWorld" schema_version="0.0.1" setup_version="0.0.1" />
</config>

Внутри этого файла у меня есть следующее: я обновил кэш хранилища, а затем получил:

Версия установки для модуля Ps_HelloWorld не указана.

Йогеш Кародия
источник
удалите, schema_versionа затем попробуйте
Manashvi Birla
это не работает
Йогеш Кародия
Попробуйте очистить кеш в командной строке, используя bin/magento cache:flushиз вашей
общей
Кроме того, schema_version удаляется в более поздних версиях беты из того, что я слышал
Smartie
эта ошибка также выдается, если на модуль есть ссылка в config.php, но он не установлен
roman204

Ответы:

15

Пытаться

php -f bin/magento module:enable --clear-static-content Module_Name
php -f bin/magento setup:upgrade

Предполагая, что вы запускаете текущую ветку master, а не ветку dev

Ренон Стюарт
источник
не могли бы вы объяснить подробно, почему нам нужно запустить php -f bin/magento setup:upgradeкоманду
Йогеш Кародия
Ssh на ваш сервер, затем перейдите в корневую папку magento
Renon Stewart,
RS есть официальная ссылка magento2, указывающая все эти команды.
huzefam
2
вы можете получить список всех команд, выполнив runnning php -f bin/magento, либо он также предоставит информацию о назначении каждой команды
amit_game
33

В моем случае это было разрешение файла / папки этого модуля.

Apache не может прочитать файл конфигурации.

Примените следующее разрешение к каталогу вашего модуля.

chmod 775 <module path> -R
Nahid
источник
1
Да, в моем случае это была проблема .. спасибо;)
Аднан
После огромного поиска я увидел этот ответ и попробовал в качестве последней попытки. Боже мой, моя проблема решена. Большое спасибо @Nahid Bro :)
Спросите
Это решило и мою проблему
Хасан аль-Йеши
11

Справочный источник: https://magentoexplorer.com/magento-2-setup-version-for-module-is-not-specified-how-to-fix (в моем случае я получил эту ошибку при создании нового модуля Magento 2 )

Вы можете столкнуться с этой ошибкой из-за неправильного разрешения файла / папки модуля, вы можете изменить разрешение для папки модуля следующим образом

chmod 775 <module path> -R

Есть еще одна возможность, что вы забыли добавить registration.php и composer.json в модуль. Попробуйте добавить следующий файл

/app/code/Namespace/Module/registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Namespace_Module',
    __DIR__
);

и /app/code/Namespace/Module/composer.json

{
    "name": "namespace/module",
    "description": "namespace",
    "require": {
      "php": "~5.5.0|~5.6.0|~7.0.0",
      "magento/framework": "100.0.*",
      "magento/module-ui": "100.0.*",
      "magento/module-config": "100.0.*",
      "magento/module-contact": "100.0.*"    
    },
    "type": "magento2-module",
    "version": "100.0.0",
    "license": [
        "OSL-3.0",
        "AFL-3.0"
    ],
    "extra": {
        "map": [
            [
                "*",
                "Namespace/Module"
            ]
        ]
    },
    "autoload": {
        "files": [ "registration.php" ],
        "psr-4": {
            "namespace\\module\\": ""
        }
    }
}

Наконец, запустите эти команды

php -f bin/magento module:enable --clear-static-content Module_Name
magento setup:upgrade

Надеюсь это поможет!

Брайан
источник
4

Дополнительный сценарий, в котором это произошло для меня, был связан с выполнением извлечения из репозитория моего проекта, и модуль был удален из файловой системы. Хотя это было сделано намеренно, в то время в конфигурационном файле Magento осталась его конфигурация.

Удаление ссылки на модуль из app/etc/config.phpрешило мою проблему.

TL; DR

Сначала я попытался отключить модуль с помощью команды CLI, module:disable VendorName_ModuleNameи ответ от CLI был Unknown module(s): 'VendorName_ModuleName'. Я предполагаю, что это потому, что он уже отсутствовал в файловой системе. Поскольку не было намерений использовать модуль снова, ручное удаление его с app/etc/config.phpэтого момента представляется целесообразным в любом случае.

Даррен Фелтон
источник
2
Tl; dr длиннее первоначального абзаца ...
Stevie G
1
@ SteveieG Я все еще улыбаюсь каждый раз, когда возвращаюсь к этому хахахахе ... Когда я впервые написал это, я не знал, что TL; DR имел в виду, я верю. Что часть "tl; dr" - это дополнительная информация, которую нужно пропустить, если вы того пожелаете, или что-то в этом роде.
Даррен Фелтон
1

Откройте вашу базу данных и найдите таблицу setup_module.

Ваш модуль Ps_HelloWorldдолжен быть в этой таблице.

Если не найдено, попробуйте ввести вручную.

Анис
источник
0

Проблема: файл app/etc/config.phpбыл скопирован из другого экземпляра magento (из-за неправильной манипуляции с файлом). Из-за этого у меня были те же симптомы, что описаны в этом вопросе.

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

Обратите внимание, что лучшее решение, вероятно, было бы bin/magento module:status, а затем bin/magento module:disableдля всех модулей с проблемами.

Седрик
источник