Menghapus instalasi modul


10

Saya mencoba untuk menghapus modul (milik saya) yang telah saya instal melalui komposer menggunakan CLI dengan perintah ini:

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

Berdasarkan jawaban yang diberikan di sini oleh @RyanH saya telah membuat Setup/Uninstall.phpfile yang menghapus data terkait database dari modul.

Ini berfungsi dengan baik tetapi prosedur uninstall terhenti.

Saya bahkan membiarkan skrip berjalan pada malam hari dan hasilnya masih sama.
File ekstensi masih ada di vendormodul.
Saya tidak menyentuh izin atau pemilik file.

Apa yang benar:

  • data terkait basis data dihapus
  • nama modul dihapus dari tabel setup_module
  • nama modul dihapus dari app/etc/config.php.

Apa yang salah:

  • file modul masih ada di vendorfolder.
  • perintah konsol tidak selesai.

Output konsol:

Anda akan menghapus kode dan / atau tabel basis data. Anda yakin? [Y / T] y
Mengaktifkan mode pemeliharaan
Anda menghapus data tanpa cadangan basis data.
Menghapus data [Namespace] _ [Modul]
Menghapus [Namespace] _ [Module] dari registry modul di database
Menghapus [Namespace] _ [Module] dari daftar modul dalam konfigurasi penggunaan
Menghapus kode dari kode Magento:

Setelah ini hanya hang.

Apakah ada cara untuk menyelesaikan proses penghapusan instalasi, atau setidaknya men-debug-nya?


bahkan saya menghadapi masalah yang sama. Apa solusinya? Apakah Anda punya ide
Vigna S

Tidak persis. Pada satu titik mulai bekerja. Saya melakukan debug mengikuti jawaban yang diberikan tetapi tidak menemukan sesuatu yang relevan.
Marius

oke terima kasih!!! Jadi bagaimana cara menghapus modul
Vigna S

Jalankan perintah yang tercantum dalam pertanyaan
Marius

Saya hanya menggunakan itu tetapi macet di, 'Menghapus kode dari basis kode Magento:'. Setelah itu hang
Vigna S

Jawaban:


3

Bagian dari proses uninstall jika ditemukan dapat ditemukan di bawah 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);
}

Pada dasarnya ia mencantumkan paket untuk dihapus dan kemudian menjalankan composer removeperintah pada paket tersebut melalui lib/internal/Magento/Framework/Composer/Remove.php:

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

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

Anda dapat menemukan runComposerCommandmetode ini di 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();
}

Bagi saya sesuatu terjadi di sepanjang jalan di sini dan fungsi-fungsi itu adalah tempat Anda harus mulai debugging.

Mungkin composer.jsonfile modul Anda hilang atau memiliki kesalahan.


file ccmposer saya ada di sana. Ini sepertinya tempat yang baik untuk memulai debugging. Terima kasih.
Marius

tahun kemudian ini telah membantu saya memahami mengapa pencopotan pemasangan saya tidak berfungsi - saya harus memanggil komposer seperti / usr / local / bin / ea-php72 ~ / bin / komposer / komposer.phar dan jelas konfigurasi tidak cocok untuk itu ...
iphigenie

0

ketika kita menjalankan modul bin / magento: uninstall Module_Name maka jalankan perintah pembaruan komposer juga dalam proses kembali yang tidak ditampilkan di cli.

Ketika kami menjalankan pembaruan komposer maka diperlukan nama pengguna dan kata sandi untuk akun pasar magento Anda. jika belum maka buat:

Untuk membuat kunci otentikasi:

  1. Masuk ke Magento Marketplace . Jika Anda tidak memiliki akun, klik Daftar.

  2. Klik nama akun Anda di kanan atas halaman dan pilih Profil Saya.

  3. Klik Kunci Akses di tab Marketplace.

masukkan deskripsi gambar di sini

Jalankan perintah ini dari direktori root magentoln -s ~/.composer/auth.json var/composer_home/ Anda dan itu akan membuat tautan simbolis auth.json komposer Anda

Ketika kita menjalankan module: uninstall lalu periksa auth.json di folder magento var atau direktori root magento.

Ini bekerja untuk saya.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.