Magento 2のフルページキャッシュが機能しない


8

Magento CE 2.0.2サイトでFPC(フルページキャッシュ)機能をオンにすると(デフォルトのテーマとカスタムテーマのどちらが実行されていてもかまいません)、このサイトのホームページを開くと、「内部サーバーFirefoxコンソールのエラー500 "、およびページが空白です。

考えられる問題は何でしょうか?


開発者モードを有効にて、エラーの内容を確認してください(Webサーバーのエラーログも確認してください)。
スティーブジョンソン

解決策を見つけましたか?2.0.6でも同じ問題が発生します
最大

2.1.1、PHP 5.6 FPM、Nginxでも同じ問題が発生します。開発者モードを有効にしても、追加情報は提供されません。発生しているPHPエラーはPHP Fatal error: Call to a member function getIdentities() on null in /vendor/magento/module-catalog/Block/Product/View.php on line 373、行のgetIdentities()関数に$identities = $this->getProduct()->getIdentities(); $this->getProduct()あります。フルページキャッシュが有効になっている場合はnullです。
Matt Mombrea 2016

回答:


11

FPCを有効にした後、同じ問題が発生しました。次のエラーが発生します。

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

最も有用なエラーメッセージではありませんが、掘り下げた結果、これはMagento\Catalog\Block\Category\Viewホームページのブロックタイプを使用してトリガーされていることがわかりました。おそらくその時点で初期化されたカテゴリがないためです。

この特定のブロックはそのタイプを必要とせずMagento\Framework\View\Element\Template、Magento 2の同等のもので問題がなかったため、これは開発者の1人によるコーディングエラーでしたcore/template


2

null値を処理するように、関数を次のように書き換えます。


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;

}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.