Magento 2 - Как удалить модуль?

11

Как удалить модуль?

Я прочитал этот документ

Но это не удалось, и отобразить ниже:

php bin/magento module:uninstall SP_Gridthumbs 

SP_Gridthumbs не является установленным пакетом композитора

MrTo-Kane
источник
Подробности Описание модуля удаления, rakeshjesadiya.com/…
Ракеш Джесадия

Ответы:

43

в документации, на которую вы ссылаетесь, говорится:

Эта команда работает только с модулями, определенными как пакеты Composer.

Если вы не установили модуль через композитор, он не будет работать.
Вы можете отключить его только через bin/magento module:disable SP_Gridthumbs.

Чтобы удалить модуль, удалите папку SP/Gridthumbs, удалите запись с модулем = 'SP_Gridthumbs' из таблицы setup_moduleи удалите все другие таблицы или записи, добавленные при установке модуля.
Также удалите линию SP_Gridthumbsизapp/etc/config.php

Мариус
источник
Как убрать весь этот модуль из проекта, ваш способ просто отключить.
MrTo-Kane
@ MagentoOdoo.com смотрите мое обновление
Мариус
Вы также должны очистить кеш
WaPoNe
3
Я проверял это. Remove the line with SP_Gridthumbs from app/etc/config.phpне нужно Magento автоматически удалит запись при запускеphp bin/magento setup:upgrade
Key Shang
На самом деле мне нужно обновить одну запись из таблицы, и этот код помещается в InstallData.php :: install (), а при включении модуля и настройке: обновите его, запустите мой код. и теперь мне нужно, когда я отключаю модуль, затем должен также удалить запись из таблицы, я сделал код в Uninstall :: uninstall, но не запускать при отключении модуля. Какой файл запускается при отключении модуля и настройке: обновление
HaFiz Umer
10

Ниже приведены инструкции по удалению модуля вручную для Magento 2.

  • Удалить папку модуля из {folder path}\app\code
  • Удалить запись модуля из setup_module
  • Команда запуска

    {корневой путь проекта magento}> {путь php} \ php.exe bin / magento setup: upgrade => Setup Upgrade

    {корневой путь проекта magento}> {php path} \ php.exe bin / magento cache: flush => Очистить кеш

Анкит Шах
источник
4

Как насчет:

php bin/magento module:disable <ExtensionProvider_ExtensionName> --clear-static-content
composer remove VendorName/VendorExtensionRepository
php bin/magento setup:upgrade

Для модулей композитора:

php bin/magento module:disable <ExtensionProvider_ExtensionName> --clear-static-content
php bin/magento module:uninstall <ExtensionProvider_ExtensionName> -r
composer update
php bin/magento setup:upgrade
Arvind07
источник
Запуск установки: обновление при наличии модулей, которые не были установлены через композитор, их установят и снова активируют, что противоречит цели.
Мохаммед Джорайд
1
@MohammedJoraid см. Обновленный ответ
Arvind07
1

Действия по удалению модуля, установленного композитором

  • Модуль bin / magento: отключить Namespace_ModuleName
  • Модуль bin / magento: удалить Namespace_ModuleName
  • композитор удалить пространство имен / имя модуля
  • bin / magento cache: flush

Действия по удалению вручную добавленного модуля в приложении / коде

  • Модуль bin / magento: отключить Namespace_ModuleName
  • удалить каталог из приложения / кода вручную
  • Настройка bin / magento: обновление
  • bin / magento cache: flush
Яш Патадия
источник
0

Я думаю, что лучше сначала отключить модуль с помощью

Модуль php bin / magento: отключить имя модуля

потому что это проверяет зависимости ...

Джорис
источник
0

Удалить расширение из magento 2:

  1. Перейдите в каталог проекта magento в CLI и проверьте состояние модуля, выполнив команду php bin/magento module:status

  2. Если он включен, отключите его, выполнив команду php bin/magento module:disable <extension name>

  3. Перейдите в базу данных, найдите таблицу «setup_module», найдите расширение и удалите его.

  4. Удалите папку с именем вашего расширения из папки app / code

  5. Запустите команду setup: upgrade.

  6. Вы успешно удалили расширение.

Аджай
источник
0

Вот пошаговое руководство по удалению модуля третьей стороны из MAGENTO 2 вручную.

Step 1: Remove the module Vendor_Mymodule from app\etc\config.php

Step 2: Drop module tables or columns from database, please check app\code\Vendor\Module\Setup folder for more information

Step 3: Remove the folder app\code\vendor\Mymodule

Step 4: Remove module configuration settings from core_config_data table by running the following query


 DELETE FROM setup_module WHERE module LIKE 'vendor_Mymodule';
Step 5: Run the following command by logging onto your SSH server

 php bin/magento setup:upgrade
But if you have installed the module via composer then you can run the following list of commands by SSHing on the box to uninstall third party module

 php bin/magento module:uninstall -r {{module_name}}
for example

php bin/magento module:uninstall -r Scommerce_GoogleTagManagerPro
-r flag removes module data 

Run the following command once module has been successfully uninstalled.

 php bin/magento setup:upgrade

К пользовательскому модулю Magento2

step1: disable the module 
$php bin/magento module:disable Vendor_MyModule
step2: remove the folder from directory app/code/Vendor
step3: remove the line of code from app/etc/config.php file.

для получения дополнительной информации об удалении установленных сторонних / композитных расширений

https://www.scommerce-mage.com/blog/magento2-uninstall-module.html

Аршад Сайед
источник
Что если у вас есть разные модули от одного и того же поставщика, которого вы хотите оставить? Ваши SQL-запросы сломают их.
Доминик Ксиген
Только что отредактировал мой ответ.
Аршад Сайед
0

Magento 2: Как удалить модуль

1. Если вы установили его вручную:

remove the folder app/code/<Vendor>/<Module>
drop module tables from database
remove the config settings.

DELETE FROM core_config_data WHERE path LIKE 'vendor_module/%'   
DELETE FROM core_config_data WHERE path LIKE 'vendor_module/%'

remove the module <Vendor>_<Module> from app/etc/config.php

remove the module <Vendor>_<Module> from table setup_module

DELETE FROM setup_module WHERE module='<Vendor>_<Module>'    
DELETE FROM setup_module WHERE module='<Vendor>_<Module>'

2. Если вы установили его через композитор:

run this in console
php bin/magento module:status
php bin/magento module:disable mirasvit/module-core --clear-static-content
php bin/magento module:uninstall -r <Vendor>_<Module>    
php bin/magento setup:upgrade
php bin/magento c:f
composer remove mirasvit/module-core

Надеюсь, кто-то получит помощь

matinict
источник
1
Я только что создал модуль без использования файла composer.json после того, как я установил composer.json. Можно ли удалить модуль с помощью composer? мой модуль => github.com/ZusZus/simple-module/tree/master/app/code/Gta/Mymod @matinict
zus
@zus, чтобы избежать конфликта, сначала вам нужно удалить код из приложения / кода, да, я думаю, что вы можете установить / удалить через composer, (ссылка на модуль ur может не работать, composer install, вам нужно добавить ваш репозиторий packagist.org )
matinict
-7
  1. открыто setup/src/Magento/Setup/Console/Command/ModuleUninstallCommand.php

и заменить

protected function validate(array $modules)
{
    $messages = [];
    $unknownPackages = [];
    $unknownModules = [];
    $installedPackages = $this->composer->getRootRequiredPackages();
    foreach ($modules as $module) {
        if (array_search($this->packageInfo->getPackageName($module), $installedPackages) === false) {
            $unknownPackages[] = $module;
        }
        if (!$this->fullModuleList->has($module)) {
            $unknownModules[] = $module;
        }
    }
    $unknownPackages = array_diff($unknownPackages, $unknownModules);
    if (!empty($unknownPackages)) {
        $text = count($unknownPackages) > 1 ?
            ' are not installed composer packages' : ' is not an installed composer package';
        $messages[] = '<error>' . implode(', ', $unknownPackages) . $text . '</error>';
    }
    if (!empty($unknownModules)) {
        $messages[] = '<error>Unknown module(s): ' . implode(', ', $unknownModules) . '</error>';
    }
    return $messages;
}

с

protected function validate(array $modules)
{
    $messages = [];
    $unknownPackages = [];
    $unknownModules = [];
    $installedPackages = $this->composer->getRootRequiredPackages();
    foreach ($modules as $module) {
        if (array_search($this->packageInfo->getPackageName($module), $installedPackages) === false) {
            $unknownPackages[] = $module;
        }
        if (!$this->fullModuleList->has($module)) {
            $unknownModules[] = $module;
        }
    }
    if (!empty($unknownModules)) {
        $messages[] = '<error>Unknown module(s): ' . implode(', ', $unknownModules) . '</error>';
    }
    return $messages;
}
  1. открыто setup/src/Magento/Setup/Model/ModuleUninstaller.php

и заменить

public function uninstallCode(OutputInterface $output, array $modules)
{
    $output->writeln('<info>Removing code from Magento codebase:</info>');
    $packages = [];
    /** @var \Magento\Framework\Module\PackageInfo $packageInfo */
    $packageInfo = $this->objectManager->get('Magento\Framework\Module\PackageInfoFactory')->create();
    foreach ($modules as $module) {
        $packages[] = $packageInfo->getPackageName($module);
    }
    $this->remove->remove($packages);
}

с

public function uninstallCode(OutputInterface $output, array $modules)
{
    $output->writeln('<info>Removing code from Magento codebase:</info>');
    $packages = [];
    /** @var \Magento\Framework\Module\PackageInfo $packageInfo */
    $packageInfo = $this->objectManager->get('Magento\Framework\Module\PackageInfoFactory')->create();
    foreach ($modules as $module) {
        $packages[] = $packageInfo->getPackageName($module);
    }
}
  1. Скажите "ляска масяска"

Обратите внимание, что решение не рекомендуется на производственном сервере

Игорей бармалеус
источник