치명적인 오류 : 인터페이스를 인스턴스화 할 수 없습니다


12

내 magento 상점 에서이 오류가 발생합니다.

치명적인 오류 : 73 행의 /Library/WebServer/Documents/magento/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php에서 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 아니오. 아닙니다.
Filipe Sá

2
캐시와의 내용을 지우십시오 var/generation.
Marius

질문에 언급 된 @Marius는 이미 / var / * 폴더를 완전히 제거했습니다.
Filipe Sá

죄송합니다. 나는 그 라인을 놓쳤다.
Marius

답변:


23

redis를 사용하는 경우 다음을 실행하십시오.


redis-cli flushall



ansible ( lxc - server) 과 같은 환경을 사용하는 경우 컨테이너에서 해당 명령을 수행해야합니다. 또한 다음을 수행했습니다.

  • 명확한 var/generation
  • 명확한 var/cache
  • 마 젠토 모듈 활성화 : bin/magento module:enable --all
  • DI 컴파일 bin/magento setup:di:compile

1
거기 밖으로 많은 오해의 소지가 솔루션을했고이 바로 일

3
Magento 모듈 활성화 : bin / magento 모듈 : enable --all-나를 위해 일했습니다
Agnes

아니! 좋은 습관이 아닙니다! 빈은 / 젠토 모듈 : 가능 --all은 :( chmod를 -R 777처럼
에 Karlis 밀러

6

나는이 오류가 있었고 var 폴더를 지우고 실행하여 해결되었습니다 setup:upgrade. 이것이 해결되지 않으면 di.xml파일 에서 오류를 찾으십시오.


특히 나를 위해 일했습니다var/cache
Joshua Soileau

덕분에 redis-cli flushall날 위해 일했습니다.
Sarjan Gautam

5

다음 명령을 실행하고 확인하십시오.

rm -rf generated

rm -rf var/*

나를 위해 일했다.


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();

0

이 오류는 특히 핵심 Magento 모듈을 활성화 또는 비활성화 할 때 app / etc / config.php에서 직접 모듈을 활성화 또는 비활성화하기 때문에 발생할 수 있습니다. 이 경우 가장 좋은 방법은 캐시를 지우고 redis 캐시를 플러시하고 니스 및 php-fpm을 다시 시작하는 것입니다. 그리고 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.