Errore irreversibile: impossibile creare un'istanza dell'interfaccia


12

Il mio negozio Magento sta generando questo errore:

Errore irreversibile: impossibile creare un'istanza dell'interfaccia Magento \ Framework \ View \ Design \ Theme \ ResolverInterface in /Library/WebServer/Documents/magento/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php on line 73

Non so perché abbia iniziato ad apparire. Non ho effettuato alcuna nuova installazione del modulo. Il negozio funzionava bene.

Ho controllato i permessi dei file e non vedo alcun problema lì. Elimina anche / var / dir e, credo, tutte le cartelle / i file dove sono stati creati.

[EDIT] La preferenza è definita vendor / magento / magento2-base / app / etc / di.xml

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

1
spero nel tuo modulo o codice personalizzato che stai cercando di usare Magento \ Framework \ View \ Design \ Theme \ ResolverInterface nel costruttore o nel gestore degli oggetti
Pradeep Kumar

@PradeepKumar No. Non lo sono.
Filipe Sá,

2
svuota la cache e il contenuto di var/generation.
Marius

@Marius come indicato nella domanda, ho già rimosso completamente la cartella / var / *.
Filipe Sá,

Scusate. Ho perso quella linea.
Marius

Risposte:


23

Se usi redis, esegui:


redis-cli flushall



Se usi anche un ambiente come ansible ( lxc - server), dovrai eseguire quel comando nel container. Inoltre ho fatto quanto segue:

  • Chiaro var/generation
  • Chiaro var/cache
  • Abilita i moduli Magento: bin/magento module:enable --all
  • Compila DI bin/magento setup:di:compile

1
c'erano così tante soluzioni fuorvianti là fuori e questo ha funzionato subito

3
Abilita moduli Magento: modulo bin / magento: abilita - tutti - Ha funzionato per me
Agnese

NO! Non è una buona pratica! modulo bin / magento: abilita - tutto è come chmod -R 777 :(
Kārlis Millers,

6

Ho avuto questo errore ed è stato risolto cancellando la cartella var e quindi eseguendo setup:upgrade. Se questo non lo risolve, cerca gli errori nei di.xmlfile


ha funzionato per me, in particolarevar/cache
Joshua Soileau,

Grazie ha redis-cli flushallfunzionato per me.
Sarjan Gautam,

5

Eseguire il comando seguente e controllare.

rm -rf generated

rm -rf var/*

Ha funzionato per me.


2

Questo ha funzionato per me:

 sudo apt-get install php-intl

 sudo service apache2 reload

1

Nel mio caso, ho dovuto rimuovere un modulo e ho semplicemente eliminato i file del modulo senza seguire i metodi corretti e quindi questo errore era sullo schermo ovunque. Dopo aver cercato molto, ho finito per sostituire i file del modulo nella stessa directory e ho eliminato tutte le cartelle richieste da var ed eseguito i seguenti comandi.

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

e tutto è stato risolto. Ho quindi seguito i modi corretti per rimuovere il modulo. Spero che questo faccia risparmiare tempo a qualcuno. :-)


1

Cancella la cache rm -rf var/cache

Se redis è abilitato, cancellare redis db utilizzando la riga di comando:

$> redis-cli
$> flushall

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

risolverà il tuo problema


0

Dump dei file di caricamento automatico del compositore :

$ composer dumpautoload

Poi:

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


0

Questo errore viene creato quando si tenta di creare (nuovo) un oggetto (classe) che è in realtà e interfaccia. Ciò si verifica in genere quando non è stata sovrascritta l'interfaccia per una classe nel file di.xml. O hanno sostituito il in di.xml nella directory adminhtml e stanno provando a usare l'interfaccia nel frontend.

interface MyInterface{
   pubic function getVariable(): int
}

class MyClass 
implements MyInterface{

   protected $variable;

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

$variable = new MyInterface();

0

Questo errore potrebbe anche a causa dell'abilitazione o disabilitazione dei moduli direttamente in app / etc / config.php, specialmente quando abilitare o disabilitare i moduli Magento di base. La cosa migliore da fare in tal caso sarebbe svuotare la cache, svuotare la cache di redis, riavviare varnish e php-fpm. E funziona

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.