Версія установки 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а потім спробуйте
Манашві Бірла

його не працює
Йогеш Кародія

Спробуйте очистити кеш-пам'ять у командному рядку, використовуючи bin/magento cache:flushсвою загальнодоступну папку
Smartie

Також schema_version видаляється в пізніших версіях бета-версії з того, що я чув
Smartie

ця помилка також викидається, якщо на модуль посилається у config.php, але він не встановлений
roman204

Відповіді:


15

Спробуйте

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

Якщо припустити, що ви запускаєте поточну головну гілку, а не гілку розробників


Ви можете, будь ласка, пояснити докладно, чому нам потрібно запустити php -f bin/magento setup:upgradeкоманду
Йогеш Кародія

Тоді зашуміть свій сервер, а потім перейдіть до кореневої папки magento
Renon Stewart

RS є офіційне посилання magento2 із зазначенням усіх цих команд.
huzefam


2
ви можете отримати список усіх команд запускаючи php -f bin/magento, або він також буде визначати, яка мета кожної команди
amit_game

33

У моєму випадку це був дозвіл файлу / папки цього модуля.

Apache не зміг прочитати файл конфігурації.

Застосувати наступний дозвіл до каталогу свого модуля.

chmod 775 <module path> -R

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

Є ще одна можливість, що ви забули додати register.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
Тл; др довше початкового абзацу ...
Стіві Г

1
@StevieG Я все ще посміхаюся кожного разу, коли повертаюся до цього хахахаха ... Коли я вперше написав це, я не знав, що означає TL; DR означає, що я вірю. Що частина "tl; dr" - це додаткова інформація, яка призначена для пропуску, якщо ви виберете щось подібне.
Даррен Фелтон

1

Відкрийте базу даних і знайдіть таблицю setup_module.

Ваш модуль Ps_HelloWorldповинен бути в цій таблиці.

Якщо не знайдено, спробуйте ввести вручну.


0

Проблема: файл app/etc/config.phpбув скопійований з іншого екземпляра magento (через погану маніпуляцію файлом). Через це у мене були ті ж симптоми, що описані в цьому запитанні.

Рішення полягало в тому, щоб видалити всі назви модулів, яких не було в екземплярі Magento, де виникла проблема, і це спрацювало нормально.

Зауважте, що краще рішення було б bin/magento module:status, і тоді, bin/magento module:disableдля всіх модулів, що мають проблеми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.