【解決方法】EC CUBE4のインストール直後に起こったエラー

急いでいる人のために解決法を先に書いておきます。
EC CUBEのインストールディレクトリ /var/cache/prod/ 以下に入っているものをすべて削除します。
以上です。

インストールしてすぐエラーの巻。

EC CUBE4のインストール直後に起こったエラーのことについて解決します。
管理画面にアクセスして早速ログイン・・・と思ったら下記エラーが出ました。

Fatal error: require(): Failed opening required 'C:\xampp\htdocs\eccube\var\cache\prod/doctrine/orm/Proxies\__CG__EccubeEntityMasterWork.php' (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\eccube\vendor\doctrine\common\lib\Doctrine\Common\Proxy\AbstractProxyFactory.php on line 206

原因

キャッシュの問題

・ページ表示がタイムアウトなどで失敗し、doctrineのキャッシュが作られていない状態でページ表示等の他のキャッシュが作られた場合発生する。

プラグインの問題

管理画面からプラグインを有効化した際に上記と同じ状態になる場合がある。

Symphony 3の仕様上、仕方ない

こちらはSymphony 3の仕様上この様になっている以上、EC CUBE自体を修正しておく事もできるが怖いのでやっていない。この記事の一番下に方法は書いておきます。

参考までにこちらのリンクで議題に上がっている。

解決方法

ディレクトリ /var/cache/prod/ 以下に入っているものをすべて削除します。
php.iniのmax_execution_timeを長めに設定しておく。

以上で無事に管理画面が表示できました。

解決方法追加(試していません)

原因としてSymphony 3の仕様上、仕方ないがEC CUBE自体を修正する方法もあると書いたが、
Symphony 3を詳しく理解していないため、その方法を実践はしていないが参考のため記しておく。

app/config/eccube/packages/doctrine.yaml を以下のように修正する。

orm:
    auto_generate_proxy_classes: '%kernel.debug%'

サイトにアクセスした際に、全てのエンティティクラスへのキャッシュを生成する。
以降の処理はキャッシュが作られている前提になる。
キャッシュが存在しないとエラー。

orm:
    auto_generate_proxy_classes: true

そのページに必要なエンティティクラスへのキャッシュを作成し、無ければ生成する。
キャッシュファイルがなくてもエラーにならない。

この修正後に再度、ディレクトリ /var/cache/prod/ 以下に入っているものをすべて削除します。

EC CUBE

Posted by bistro