Фатальна помилка: Інтерфейс неможливо створити


12

Мій магазин Magento видає цю помилку:

Фатальна помилка: Неможливо створити інтерфейс Magento \ Framework \ Переглянути \ Дизайн \ Тема \ ResolverInterface у /Library/WebServer/Documents/magento/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php на лінії 73

Я не знаю, чому це почало з'являтися. Я не робив нової установки модуля. Магазин працював чудово.

Я перевіряю дозволи на файли і не бачу жодної проблеми. Також видаліть / var / dir і, я думаю, всі створені папки / файли.

[EDIT] Перевагою визначено постачальник / magento / magento2-base / app / тощо / di.xml

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

1
Я сподіваюсь, що ур користувальницький модуль або код, що ви намагаєтеся використовувати Magento \ Framework \ Перегляд \ Дизайн \ Тема \ ResolverInterface у конструкторі чи менеджері об'єктів
Pradeep Kumar

@PradeepKumar Ні. Я ні.
Filipe Sá

2
очистіть кеш і вміст var/generation.
Маріус

@Marius, як зазначено в запитанні, папку / var / * я вже повністю видалив.
Filipe Sá

Вибачте. Я пропустив цю лінію.
Маріус

Відповіді:


23

Якщо ви використовуєте redis, запустіть:


redis-cli flushall



Якщо ви також використовуєте таке середовище, як ansible ( lxc - server), вам потрібно виконати цю команду в контейнері. Плюс я зробив наступне:

  • Ясно var/generation
  • Ясно var/cache
  • Увімкнути модулі Magento: bin/magento module:enable --all
  • Складіть DI bin/magento setup:di:compile

1
там було так багато оманливих рішень, і це спрацювало відразу

3
Увімкнути модулі Magento: модуль bin / magento: enable --all - працював для мене
Агнес

НІ! Це не дуже добра практика! модуль bin / magento: enable - всі як chmod -R 777 :(
Kārlis Millers

6

У мене була ця помилка, і її було вирішено, очистивши папку var і потім запустивши setup:upgrade. Якщо це не вирішує, то шукайте помилки у di.xmlфайлах


працював на мене, конкретноvar/cache
Джошуа Солео

Спасибі redis-cli flushallпрацювали для мене.
Сарджан Гаутам



1

У моєму випадку мені довелося видалити модуль, і я просто видалив файли модуля, не дотримуючись належних методів, і тоді ця помилка була скрізь на екрані. Після багато пошуків я в кінцевому підсумку замінив файли модуля назад в той самий каталог і видалив усі необхідні папки з var і запустив наступні команди.

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

і все було виправлено. Потім я дотримувався належних способів видалення модуля. Сподіваюся, це економить якийсь час. :-)


1

Очистити кеш rm -rf var/cache

Якщо функція redis увімкнена, очистіть redis db за допомогою командного рядка:

$> redis-cli
$> flushall


0

Дамп композитора автоматично завантажує файли:

$ composer dumpautoload

Тоді:

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


0

Ця помилка створюється при спробі створення (нового) об'єкта (класу), який є насправді та інтерфейсом. Зазвичай це відбувається, коли ви не перекрили інтерфейс для класу у файлі di.xml. Або переосмислили в di.xml в каталозі adminhtml і намагаються використовувати інтерфейс у фронтенді.

interface MyInterface{
   pubic function getVariable(): int
}

class MyClass 
implements MyInterface{

   protected $variable;

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

$variable = new MyInterface();

0

Ця помилка також може бути через включення або відключення модулів безпосередньо в app / etc / config.php, особливо коли вмикати або вимикати основні модулі Magento. Найкраще робити в такому випадку - очистити кеш, очистити кеш Redis, перезапустити лак і php-fpm. І це працює.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.