Неустранимая ошибка: невозможно создать интерфейс

12

Мой магазин magento выдает эту ошибку:

Неустранимая ошибка: Не удается создать экземпляр интерфейса Magento \ Framework \ View \ Design \ Theme \ ResolverInterface в /Library/WebServer/Documents/magento/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php в строке 73

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

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

[РЕДАКТИРОВАТЬ] Предпочтение определяется vendor / magento / magento2-base / app / etc / di.xml

<preference for="Magento\Framework\View\Design\Theme\ResolverInterface" type="Magento\Theme\Model\Theme\Resolver" /> 
Филипе Са
источник
1
Я надеюсь, что в вашем пользовательском модуле или коде вы пытаетесь использовать Magento \ Framework \ View \ Design \ Theme \ ResolverInterface в конструкторе или диспетчере объектов
Pradeep Kumar
@PradeepKumar Нет. Я не.
Филипе Са
2
очистить кеш и содержимое var/generation.
Мариус
@Marius, как указано в вопросе, я уже полностью удалил папку / var / *.
Филипе Са
Сожалею. Я пропустил эту линию.
Мариус

Ответы:

23

Если вы используете Redis, запустите:


redis-cli flushall



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

  • Очистить var/generation
  • Очистить var/cache
  • Включить модули Magento: bin/magento module:enable --all
  • Компилировать DI bin/magento setup:di:compile
Gorr1995
источник
1
было так много вводящих в заблуждение решений, и это сразу сработало
3
Включить модули Magento: модуль bin / magento: включить --all - Работал для меня
Агнес
НЕТ! Это не очень хорошая практика! Модуль bin / magento: enable --all похож на chmod -R 777 :(
Карлис Миллерс
6

У меня была эта ошибка, и она была решена путем очистки папки var и последующего запуска setup:upgrade. Если это не решает проблему, ищите ошибки в di.xmlфайлах

Клаудиу Крянгэ
источник
работал для меня, в частностиvar/cache
Джошуа Сойло
Спасибо, redis-cli flushallработал для меня.
Сарджан Гаутам
5

Запустите следующую команду и проверьте.

rm -rf generated

rm -rf var/*

Работал на меня.

Казим Нурани
источник
2

Это сработало для меня:

 sudo apt-get install php-intl

 sudo service apache2 reload
abahet
источник
1

В моем случае мне пришлось удалить модуль, и я просто удалил файлы модуля, не следуя соответствующим методам, и тогда эта ошибка была на экране везде. После долгих поисков я в итоге заменил файлы модуля обратно в тот же каталог, удалил все необходимые папки из var и выполнил следующие команды.

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

и все было исправлено. Затем я последовал правильные способы удаления модуля. Надеюсь, это сэкономит кому-то время. :-)

MTM
источник
1

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

Если redis включен, очистите redis db с помощью командной строки:

$> redis-cli
$> flushall
Arvind07
источник
0
php bin/magento c:c
php bin/magento setup:di:compile

исправит вашу проблему

Dexture
источник
0

Файлы автозагрузки Dump composer :

$ composer dumpautoload

Затем:

bin/magento setup:upgrade
bin/magento setup:di:compile
user80131
источник
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. И это работает.

Джаячандран н
источник