Erro fatal: não é possível instanciar a interface


12

Minha loja magento está lançando este erro:

Erro fatal: Não é possível instanciar a interface Magento \ Framework \ View \ Design \ Theme \ ResolverInterface em /Library/WebServer/Documents/magento/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php na linha 73

Não sei por que começou a aparecer. Não fiz nenhuma nova instalação do módulo. A loja estava funcionando bem.

Verifiquei as permissões de arquivo e não vejo nenhum problema lá. Exclua também o / var / dir e, creio, todas as pastas / arquivos onde foram criados.

[EDIT] A preferência é definida vendor / magento / magento2-base / app / etc / di.xml

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

11
Espero que no ur módulo personalizado ou código a sua tentativa de usar Magento \ Framework \ Ver \ Projeto \ Tema \ ResolverInterface no construtor ou objeto gerente
Pradeep Kumar

@PradeepKumar Não. Não sou.
Filipe Sá

2
limpe seu cache e o conteúdo de var/generation.
Marius

@ Marius, como indicado na pergunta, eu já removi a pasta / var / * completamente.
Filipe Sá

Desculpa. Eu perdi essa linha.
Marius

Respostas:


23

Se você usar redis, execute:


redis-cli flushall



Se você também usar um ambiente como ansible ( lxc - server), precisará executar esse comando no contêiner. Além disso, fiz o seguinte:

  • Claro var/generation
  • Claro var/cache
  • Ative os módulos Magento: bin/magento module:enable --all
  • Compile DI bin/magento setup:di:compile

11
havia tantas soluções enganosas lá fora, e isso funcionou imediatamente

3
Habilitar módulos Magento: bin / Magento módulo: permitem --all - Trabalhou para mim
Agnes

NÃO! Não é uma boa prática! módulo bin / magento: enable --all é como chmod -R 777 :(
Kārlis Millers

6

Eu tive esse erro e foi resolvido limpando a pasta var e depois executando setup:upgrade. Se isso não resolver, procure erros nos di.xmlarquivos


trabalhou para mim, especificamentevar/cache
Joshua Soileau

Obrigado redis-cli flushalltrabalhou para mim.
Sarjan Gautam 30/10/19

5

Execute o seguinte comando e verifique.

rm -rf generated

rm -rf var/*

Trabalhou para mim.


2

Isso funcionou para mim:

 sudo apt-get install php-intl

 sudo service apache2 reload

1

No meu caso, tive que remover um módulo e simplesmente excluí os arquivos do módulo sem seguir os métodos adequados e, em seguida, esse erro estava na tela em todos os lugares. Depois de pesquisar muito, acabei substituindo os arquivos do módulo no mesmo diretório e excluí todas as pastas necessárias de var e executei os seguintes comandos.

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

e tudo foi consertado. Segui as maneiras adequadas de remover o módulo. Espero que isso economize o tempo de alguém. :-)


1

Limpe o cache rm -rf var/cache

Se o redis estiver ativado, limpe o redis db usando a linha de comando:

$> redis-cli
$> flushall

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

irá corrigir seu problema


0

Despejar arquivos de carregamento automático do compositor :

$ composer dumpautoload

Então:

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


0

Este erro é criado quando você tenta criar (novo) um objeto (classe) que é de fato e interface. Isso normalmente acontece quando você não substituiu a interface de uma classe no arquivo di.xml. Ou substituiu o no di.xml no diretório adminhtml e está tentando usar a interface no frontend.

interface MyInterface{
   pubic function getVariable(): int
}

class MyClass 
implements MyInterface{

   protected $variable;

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

$variable = new MyInterface();
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.