Magento 2 Full Page Cache funktioniert nicht


8

Wann immer ich die FPC-Funktion (Full Page Cache) auf meiner Magento CE 2.0.2-Site aktiviere (egal ob ein Standarddesign oder ein benutzerdefiniertes Design ausgeführt wird) und wenn ich die Homepage dieser Site öffne, wird "Interner Server" angezeigt Fehler 500 "in der Firefox-Konsole, und die Seite ist leer.

Was könnte das mögliche Problem sein?


Aktivieren Sie den Entwicklermodus , um den Fehler zu ermitteln (siehe auch das Fehlerprotokoll Ihres Webservers).
Steve Johnson

Haben Sie eine Lösung gefunden? Wir haben das gleiche Problem am 2.0.6
Max

Gleiches Problem für uns unter 2.1.1, PHP 5.6 FPM, Nginx. Das Aktivieren des Entwicklermodus liefert keine zusätzlichen Informationen. Der PHP-Fehler, den wir erhalten, ist PHP Fatal error: Call to a member function getIdentities() on null in /vendor/magento/module-catalog/Block/Product/View.php on line 373Das Problem liegt in der Funktion getIdentities () in der Zeile: $identities = $this->getProduct()->getIdentities(); $this->getProduct()ist null, wenn der Ganzseiten- Cache aktiviert ist.
Matt Mombrea

Antworten:


11

Wir hatten das gleiche Problem, nachdem wir FPC aktiviert hatten. Der folgende Fehler würde auftreten:

Fatal error: Uncaught Error: Call to a member function getIdentities() on null in /vendor/magento/module-catalog/Block/Category/View.php:177 

Nicht die hilfreichste Fehlermeldung, aber nach einigem Graben stellten wir fest, dass dies durch die Verwendung des Blocktyps Magento\Catalog\Block\Category\Viewauf unserer Homepage ausgelöst wurde - vermutlich, weil zu diesem Zeitpunkt keine Kategorie initialisiert ist.

Dies war ein Codierungsfehler eines unserer Entwickler, da dieser spezielle Block diesen Typ nicht benötigte und mit Magento\Framework\View\Element\Templatedem Magento 2-Äquivalent in Ordnung war core/template.


2

Schreiben Sie die Funktion folgendermaßen neu, um die Nullwerte zu verarbeiten:


public function getIdentities()
    {
        $identities = [];

        if (is_array($this->getItems()) || is_object($this->getItems()))
        {
            foreach ($this->getItems() as $item)
            {
                $identities = array_merge($identities, $item->getIdentities());
            }
        }
        return $identities;

}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.