Ich habe Magento 1.7 installiert und es hat bis jetzt gut funktioniert.
Ich importiere täglich Produkte. Wenn es einen neuen Hersteller gibt, füge ich ihn im Dropdown-basierten Herstellerattribut hinzu.
Heute habe ich eine neue Herstelleroption im Attribut-Backend hinzugefügt und bin gegangen, um Produkte zu importieren, die erfolgreich importiert wurden.
Aber nachdem ich versucht habe, eine Seite in der Magento Admin-Site zu öffnen, wird die folgende Fehlermeldung angezeigt
Schwerwiegender Fehler: Die letzte Methode Mage_Core_Model_Abstract :: clearInstance () in /var/www/html/app/code/core/Mage/Catalog/Model/Category.php in Zeile 36 kann nicht überschrieben werden
Die Linie 36
hat {
für diese Klasse gerade erst begonnen, sich zu kräuseln
class Mage_Catalog_Model_Category extends Mage_Catalog_Model_Abstract
{ <-- this is line 36
Und ich habe überprüft, Mage_Catalog_Model_Category
aber es gibt keine Methode mit Namen definiert clearInstance
. Es ist wirklich nervig.
Zu Ihrer Information: Ich habe kein einziges Zeichen des Codes berührt. Ich verwende lediglich die ADMIN-Site, um Produkte zu importieren und einige erforderliche Attribute hinzuzufügen
quelle
Antworten:
Dieses Verhalten tritt normalerweise nicht auf, wenn Sie den Code von Magento nicht in irgendeiner Weise geändert haben - sei es über Erweiterungen von Drittanbietern, Änderungen des Kerncodes oder allgemeine Anpassungen.
Die Tatsache, dass es im Administrator vor dem tatsächlichen Laden von Datenmodellen (Produktgitter usw.) auftritt, würde bedeuten, dass es durch eine Erweiterung verursacht wird - nicht durch importierte Daten.
Wenn es im Produkt-Grid vorkommt, kann es sich um das Produktmodell handeln, das aufgrund eines fehlgeschlagenen Imports fehlerhaft ist.
Aber nach einer schnellen Suche gibt es eine Menge indizierter Google-Suchergebnisse von Magento-Stores mit demselben Fehler. So könnte es im Kern sein (obwohl wir noch nie darauf gestoßen sind) - aber ich bin zweifelhaft.
Blick auf den Kern in 1.7
Sie sollten die
clearInstance()
Methode nicht überschreiben . Tatsächlich wird diese Methode nur einmal in deklariertapp/code/core/Mage/Core/Model/Abstract.php
Ich habe gesehen, dass Fehler dieser Art auftreten, wenn Leute versehentlich
include
eine überschriebene Klasse verwendet haben (was dazu führte, dass sie zweimal geladen wurde).Am besten folgen Sie dem Standard-Debug-Verfahren
./app/code/local
Verzeichnis umbenennen./app/code/community
Verzeichnis umbenennenUnd sehen Sie nach, ob das Problem weiterhin besteht.
quelle
Das Problem liegt hier bei APC. Deaktivieren Sie APC, und das Problem wird behoben.
quelle
nach PHP-Standards für diesen spezifischen Fehler gehen:
es bedeutet eindeutig , dass Sie erweiterte Klasse
Mage_Core_Model_Abstract
mitclass Mage_Catalog_Model_Category extends Mage_Catalog_Model_Abstract
und innerhalb dieser Klasse haben Sie
clearInstance()
als eine Funktion definiert.Da
clearInstance()
function eine letzte Funktion ist, dürfen Sie diese Funktion in keiner der erweiterten Klassen ändern.Was genau ist Ihre Zeile 36, wenn Sie über und unter Zeile einen Dummy-Code einfügen, von dem Sie annehmen, dass es sich um Zeile 36 handelt?
Ich hatte Entwickler gesehen, die Dateien in einem bestimmten Ordner modifizierten oder untersuchten, während sich Dateien in einem anderen Ordner befanden, die wie beim Compiler auf echte PHP-Klassendateien eingestellt waren.
quelle
clearInstance
inlocal
undcommunity
Pool. Ich habe jedoch das letzte Schlüsselwort aus der Funktionsdeklaration entfernt, um das Problem vorübergehend zu beheben. Es ist jedoch ärgerlich, dassfinal
die Dinge immer noch ordnungsgemäß funktionieren, wenn ich das Schlüsselwort wieder vor der Funktion eingefügt habe .Ich hatte das gleiche Problem mit der neuesten PHP 5.4-Version auf einer anderen Magento-Version (im Frontend-Bereich) und konnte dies nicht durch Code oder irgendwelche Caches lösen. Hast du die Version überprüft?
In diesem Fall ist ein Rollback auf die frühere Version einen Versuch wert.
quelle
Ich habe dies gerade erlebt und einen unbestätigten Fehler gefunden, der eine sehr ähnliche Konfiguration angibt.
Dies scheint ein Fehler in der Kombination von zu sein
Die zwei derzeit besten Lösungen für das Problem sind:
A) Aktualisieren Sie PHP auf eine niedrigere Arbeitsversion, möglicherweise 5.4.11 oder niedriger.
B) APC deaktivieren, falls nicht möglich, siehe A. :)
quelle
Ich habe dieses Problem für Magento 1.9 behoben, indem ich die Art und Weise geändert habe, wie PHP ausgeführt wird. Ich habe absolut keine Ahnung, welche weiteren Konsequenzen diese Änderung hat. Ich versuche das im Moment herauszufinden.
quelle
Ich hatte dasselbe Problem erwartet. Es gab keine Deklaration der clearInstance- Methode außerhalb des Core-Pools.
Ich habe meine Dateien "nginx access.log" und "error.log" analysiert und festgestellt, dass diese Fehler auftreten, wenn Google- und Bing-Bots meine Website in wenigen Minuten tausendmal in verschiedenen URLs besuchen und dabei viele Anfragen und Abfragen von Magento stellen. Diese Dinge bringen meine Seite zum Erliegen.
Ich schätze, ich habe das behoben, indem ich die Crawler-Leistung von Google verringert und an den Panels ihres Webmasters gebastelt habe.
Sie können GoAccess oder Request Log Analyzer verwenden , um Ihre Protokolldatei zu analysieren und den Benutzeragenten mit den häufigsten Besuchern anzuzeigen .
quelle