모듈 제거


10

이 명령으로 CLI를 사용하여 composer를 통해 설치 한 모듈 (내 자신의)을 제거하려고합니다.

bin/magento module:uninstall -r [Namespace]_[Module]  

@RyanH가 제공 한 답변을 기반으로 Setup/Uninstall.php모듈의 데이터베이스 관련 데이터를 제거 하는 파일을 만들었습니다 .

이것은 완벽하게 작동하지만 제거 절차가 중단됩니다.

나는 심지어 밤새 스크립트를 실행하고 동일한 결과를 얻었습니다.
확장 파일은 여전히 vendor모듈에 있습니다.
파일 권한이나 소유자를 건드리지 않았습니다.

올바른 일 :

  • 데이터베이스 관련 데이터가 제거됩니다
  • 모듈 이름이 테이블에서 제거됩니다. setup_module
  • 모듈 이름이에서 제거됩니다 app/etc/config.php.

무엇이 잘못 되었습니까?

  • 모듈 파일은 여전히 vendor폴더에 있습니다.
  • 콘솔 명령이 완료되지 않습니다.

콘솔 출력 :

코드 및 / 또는 데이터베이스 테이블을 제거하려고합니다. [y / N] y
유지 관리 모드 활성화
데이터베이스 백업없이 데이터를 제거하고 있습니다.
[Namespace] _ [Module]
데이터
제거 데이터베이스의 모듈 레지스트리에서 [Namespace] _ [Module]
제거 배포 구성의 모듈 목록에서 [Namespace] _ [Module] 제거 Magento 코드베이스에서 코드 제거 :

이 후 그냥 중단됩니다.

어쨌든 제거 프로세스를 완료하거나 최소한 디버깅해야합니까?


심지어 같은 문제에 직면하고 있습니다. 이것에 대한 해결책은 무엇입니까? 당신은 어떤 아이디어가 있습니까
Vigna S

정확히. 어느 시점에서 그것은 작동하기 시작했다. 제공된 답변에 따라 디버그를 수행했지만 관련성이 없습니다.
Marius

알았어 고마워 !!! 따라서 모듈을 제거하는 방법
Vigna S

질문에 나열된 명령을 실행하십시오
Marius

나는 그것을 사용하고 있지만 'Magento 코드베이스에서 코드 제거 :'에 붙어 있습니다. 그 후 그것은 중단
Vigna S

답변:


3

제거 프로세스의 일부는 다음과 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);
}

기본적으로 제거 할 패키지를 나열한 후 다음을 composer remove통해 해당 패키지 에서 명령 을 실행합니다 lib/internal/Magento/Framework/Composer/Remove.php.

public function remove(array $packages)
{
    $composerApplication = $this->composerApplicationFactory->create();

    return $composerApplication->runComposerCommand(
        [
            'command' => 'remove',
            'packages' => $packages
        ]
    );
}

runComposerCommand방법은 vendor/magento/composer/src/MagentoComposerApplication.php다음 에서 찾을 수 있습니다 .

public function runComposerCommand(array $commandParams, $workingDir = null)
{
    $this->consoleApplication->resetComposer();

    if ($workingDir) {
        $commandParams[self::COMPOSER_WORKING_DIR] = $workingDir;
    } else {
        $commandParams[self::COMPOSER_WORKING_DIR] = dirname($this->composerJson);
    }

    $input = $this->consoleArrayInputFactory->create($commandParams);

    $exitCode = $this->consoleApplication->run($input, $this->consoleOutput);

    if ($exitCode) {
        throw new \RuntimeException(
            sprintf('Command "%s" failed: %s', $commandParams['command'], $this->consoleOutput->fetch())
        );
    }

    return $this->consoleOutput->fetch();
}

나에게 여기에 어떤 일이 발생하고 그 기능은 디버깅을 시작 해야하는 곳입니다.

모듈 composer.json파일이 없거나 오류가있을 수 있습니다.


내 ccmposer 파일이 있습니다. 디버깅을 시작하기에 좋은 장소 인 것 같습니다. 감사.
Marius

몇 년 후 이것은 제거가 작동하지 않는 이유를 이해하는 데 도움이되었습니다.
iphigenie

0

우리가 실행할 때 빈 / 젠토 모듈 : 설치 제거 MODULE_NAME는 다음은 CLI에 표시되지 않습니다 다시 과정에서 또한 작곡가 업데이트 명령을 실행합니다.

작곡가 업데이트를 실행하면 magento 마켓 플레이스 계정의 사용자 이름과 비밀번호가 필요합니다. 다음을 만들지 않은 경우 :

인증 키를 만들려면

  1. Magento Marketplace에 로그인하십시오 . 계정이 없으면 등록을 클릭하십시오.

  2. 페이지 오른쪽 상단에서 계정 이름을 클릭하고 내 프로필을 선택하십시오.

  3. 마켓 플레이스 탭에서 액세스 키를 클릭하십시오.

여기에 이미지 설명을 입력하십시오

magento 루트 디렉토리에서이 명령을 실행하면 ln -s ~/.composer/auth.json var/composer_home/ 작곡가 auth.json 의 심볼릭 링크가 생성됩니다.

module : uninstall을 실행하면 magento var 폴더 또는 magento 루트 디렉토리에서 auth.json을 확인합니다.

그것은 나를 위해 작동합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.