ข้อผิดพลาดร้ายแรง: ไม่สามารถยกตัวอย่างอินเทอร์เฟซ


12

ร้านวีโอไอพีของฉันขว้างปาข้อผิดพลาดนี้:

ข้อผิดพลาดร้ายแรง: ไม่สามารถสร้างอินเทอร์เฟซ Magento \ Framework \ View \ Design \ Theme \ ResolverInterface ใน /Library/WebServer/Documents/magento/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php ที่บรรทัด 73

ฉันไม่รู้ว่าทำไมมันจึงเริ่มปรากฏ ฉันไม่ได้ทำการติดตั้งโมดูลใหม่ ร้านค้าทำงานได้ดี

ฉันตรวจสอบการอนุญาตของไฟล์และไม่เห็นปัญหาใด ๆ ยังลบ / var / dir และฉันคิดว่าทุกโฟลเดอร์ / ไฟล์ที่สร้างขึ้น

[แก้ไข] การกำหนดค่าตามความชอบมีการกำหนดผู้จำหน่าย / 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 ใน Constructor หรือผู้จัดการวัตถุ
Pradeep Kumar

@ พรอมต์คูมาร์ไม่ฉันไม่ได้
Filipe Sá

2
var/generationล้างแคชและเนื้อหาของคุณ
Marius

@Marius ตามที่ระบุในคำถามฉันได้ลบโฟลเดอร์ / var / * เรียบร้อยแล้ว
Filipe Sá

ขอโทษ ฉันพลาดสายนั้น
Marius

คำตอบ:


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: เปิดใช้งาน - ทั้งหมด - ทำงานให้ฉัน
Agnes

NO! มันไม่ใช่วิธีปฏิบัติที่ดี! โมดูล bin / magento: เปิดใช้งาน - ทั้งหมดเป็นเหมือน chmod -R 777 :(
Kārlis Millers

6

ผมมีข้อผิดพลาดนี้และมันก็แก้ไขได้โดยการล้างโฟลเดอร์ var setup:upgradeแล้วทำงาน หากวิธีนี้ไม่ช่วยแก้ปัญหาให้ค้นหาข้อผิดพลาดในdi.xmlไฟล์


ทำงานให้ฉันโดยเฉพาะvar/cache
Joshua Soileau

ขอบคุณที่redis-cli flushallทำงานให้ฉัน
Sarjan Gautam



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

ไฟล์อัตโนมัตินักแต่งเพลงการ ถ่ายโอนข้อมูล:

$ composer dumpautoload

แล้ว:

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

0

ปัญหาเดียวกันที่ฉันเผชิญเมื่ออัปเดต Magento เวอร์ชัน 2.3.3 ดังนั้นฉันแทนที่ความapp/etc/di.xmlช่วยเหลือเนื้อหาไฟล์ด้วยเส้นทางด้านล่าง https://github.com/magento/magento2/blob/ddf42caaf25311f10b23b95a92746f99943e045e/app/etc/di.xml#L212

ปัญหาของฉันได้รับการแก้ไขแล้ว


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 และมันใช้งานได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.