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.