致命的なエラー:インターフェイスをインスタンス化できません


12

私のmagentoストアがこのエラーをスローしています:

致命的なエラー:/ライブラリ/WebServer/Documents/magento/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.phpの73行目で、インターフェイスMagento \ Framework \ View \ Design \ Theme \ ResolverInterfaceをインスタンス化できません

それがなぜ現れ始めたのか私にはわかりません。新しいモジュールをインストールしませんでした。店は順調だった。

ファイルのアクセス許可を確認しましたが、問題はありません。また、/ 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いいえ、違います。
FilipeSá2015年

2
キャッシュとのコンテンツをクリアしますvar/generation
マリウス

@Mariusは質問で述べたように、/ var / *フォルダを完全に削除しました。
FilipeSá2015年

ごめんなさい。その行を逃した。
マリウス

回答:


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 module:enable --all-私のために働いた
Agnes

番号!いい練習じゃない!bin / magento module:enable --allはchmod -R 777 :(
KārlisMillers



2

これは私のために働きました:

 sudo apt-get install php-intl

 sudo service apache2 reload

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
php bin/magento c:c
php bin/magento setup:di:compile

あなたの問題を修正します


0

ダンプ作曲の 自動ロードファイル:

$ composer dumpautoload

次に:

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


0

このエラーは、実際にインターフェースであるオブジェクト(クラス)を(新規に)作成しようとしたときに作成されます。これは通常、di.xmlファイル内のクラスのインターフェースをオーバーライドしていない場合に発生します。または、adminhtmlディレクトリのdi.xmlでをオーバーライドし、フロントエンドのインターフェースを使用しようとしています。

interface MyInterface{
   pubic function getVariable(): int
}

class MyClass 
implements MyInterface{

   protected $variable;

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

$variable = new MyInterface();
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.