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" /> 
Filipe Sá
sumber
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
Gorr1995
sumber
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

Claudiu Creanga
sumber
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.

Kazim Noorani
sumber
2

Ini bekerja untuk saya:

 sudo apt-get install php-intl

 sudo service apache2 reload
abahet
sumber
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. :-)

MTM
sumber
1

Bersihkan cache rm -rf var/cache

Jika redis diaktifkan, hapus redis db menggunakan baris perintah:

$> redis-cli
$> flushall
Arvind07
sumber
0
php bin/magento c:c
php bin/magento setup:di:compile

akan memperbaiki masalah Anda

Dexture
sumber
0

File autoload komposer sampah :

$ composer dumpautoload

Kemudian:

bin/magento setup:upgrade
bin/magento setup:di:compile
pengguna80131
sumber
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();
Dallas Clarke
sumber