Kesalahan fatal: Tidak dapat membuat instance antarmuka


12

Toko magento saya membuat kesalahan ini:

Kesalahan fatal: Tidak dapat membuat instance antarmuka Magento \ Framework \ View \ Design \ Theme \ ResolverInterface di /Library/WebServer/Documents/magento/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php on line 73

Saya tidak tahu mengapa itu mulai muncul. Saya tidak membuat instalasi modul baru. Toko itu bekerja dengan baik.

Saya sudah memeriksa izin file dan saya tidak melihat masalah di sana. Hapus juga / var / dir dan, saya pikir, semua folder / file yang dibuat.

[EDIT] Preferensi ini ditentukan vendor / magento / magento2-base / app / etc / di.xml

<preference for="Magento\Framework\View\Design\Theme\ResolverInterface" type="Magento\Theme\Model\Theme\Resolver" /> 

1
Saya berharap di modul atau kode kustom Anda mencoba menggunakan Magento \ Framework \ View \ Design \ Theme \ ResolverInterface dalam constructor atau object manager
Pradeep Kumar

@PradeepKumar No. Saya tidak.
Filipe Sá

2
bersihkan cache Anda dan konten var/generation.
Marius

@Marius seperti yang dinyatakan dalam pertanyaan, saya sudah menghapus folder / var / * sepenuhnya.
Filipe Sá

Maaf. Saya melewatkan garis itu.
Marius

Jawaban:


23

Jika Anda menggunakan redis, jalankan:


redis-cli flushall



Jika Anda juga menggunakan lingkungan seperti ansible ( lxc - server), Anda harus melakukan perintah itu dalam wadah. Plus saya melakukan yang berikut:

  • Bersih var/generation
  • Bersih var/cache
  • Aktifkan modul Magento: bin/magento module:enable --all
  • Kompilasi DI bin/magento setup:di:compile

1
ada begitu banyak solusi menyesatkan di luar sana dan ini langsung bekerja

3
Aktifkan modul Magento: modul bin / magento: aktifkan --semua - Bekerja untuk saya
Agnes

TIDAK! Itu bukan latihan yang bagus! modul bin / magento: aktifkan --semua itu seperti chmod -R 777 :(
Kārlis Millers

6

Saya mengalami kesalahan ini dan diselesaikan dengan menghapus folder var dan kemudian menjalankannya setup:upgrade. Jika ini tidak menyelesaikannya maka cari kesalahan dalam di.xmlfile


bekerja untuk saya, khususnyavar/cache
Joshua Soileau

Terima kasih redis-cli flushallberhasil untuk saya.
Sarjan Gautam

5

Jalankan perintah berikut dan periksa.

rm -rf generated

rm -rf var/*

Bekerja untukku.


2

Ini bekerja untuk saya:

 sudo apt-get install php-intl

 sudo service apache2 reload

1

Dalam kasus saya, saya harus menghapus modul dan saya hanya menghapus file-file modul tanpa mengikuti metode yang tepat dan kemudian kesalahan ini muncul di layar di mana-mana. Setelah mencari banyak, saya akhirnya mengganti file modul kembali ke direktori yang sama dan menghapus semua folder yang diperlukan dari var dan menjalankan perintah berikut.

php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy

dan semua sudah diperbaiki. Saya kemudian mengikuti cara yang tepat untuk menghapus modul. Semoga ini menghemat waktu seseorang. :-)


1

Bersihkan cache rm -rf var/cache

Jika redis diaktifkan, hapus redis db menggunakan baris perintah:

$> redis-cli
$> flushall

0
php bin/magento c:c
php bin/magento setup:di:compile

akan memperbaiki masalah Anda


0

File autoload komposer sampah :

$ composer dumpautoload

Kemudian:

bin/magento setup:upgrade
bin/magento setup:di:compile


0

Kesalahan ini dibuat ketika Anda mencoba membuat (baru) objek (kelas) yang sebenarnya dan antarmuka. Ini biasanya terjadi ketika Anda belum mengganti antarmuka untuk kelas di file di.xml. Atau telah menimpa di.xml di direktori adminhtml dan mencoba menggunakan antarmuka di frontend.

interface MyInterface{
   pubic function getVariable(): int
}

class MyClass 
implements MyInterface{

   protected $variable;

   pubic function getVariable(){
      return $this->variable;
   }
}

$variable = new MyInterface();
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.