EC-CUBE3 HTTP 500 ERROR は大量キャッシュを生むtwigのバグが原因。

eccube3500error Web制作

目的:EC-CUBE3 ver3.0.15に使われているテンプレートエンジンのバグを知る

利用環境:EC-CUBE3 バージョン3.0.15

症状:ブロックパーツを修正、登録ボタンを押すと・・・

このページは動作していません
○○○.jpでは現在このリクエストを処理できません。
HTTP ERROR 500

という画面になり、ブロックが更新できない。

キャッシュがたまっているのかな?と考えキャッシュクリアを掛けてみると

再び、

このページは動作していません
○○○.jpでは現在このリクエストを処理できません。
HTTP ERROR 500

何ですかこのエラーーーーは。

困ったこの症状、解決策を調べた。

はじめに行ったのは、twig/production/内のキャッシュの削除

同様の症状を調べると、500エラーは twig内の、admin及びdefaultファイルの中に貯まった膨大な量のキャッシュデータが原因しているとのこと。

削除するファイルは

/app/cache/twig/production/admin

/app/cache/twig/production/default

の中に入っているキャッシュデータ全て。

この2つのファイル内のキャッシュをFTPから直接削除することにした。

1時間後、まだ削除中

3時間後、まだ削除中

6時間後、削除作業が終わった??

見てみると、全然減ってない

なんで?

その後、格闘すること2日間、キャッシュデータは減らない

EC-CUBEの管理画面ではやはり、500エラーになってしまう。

困った!

本当の解決策は、twigをバージョンアップすること

更に、コミュニティーを調べてゆくと

EC-CUBE3 ver3.0.15に使われているテンプレートエンジン「twig バージョン 1.33」に過剰にキャッシュを生成し続けるというとんでもないバグがあることが判明。

EC-CUBEにアクセスするたびに大量のキャッシュを生成するらしい。・・・・大迷惑!!!

理由が分かったので、さっそく Twigバージョン1.34を探して入替えよう。

Twigの入替の準備

しかし、Twigとはどこにあるの?、どうやって入れ替えんの?

EC-CUBE3 ver3.0.16ではこのバグが解消されているとの情報あり。
3.0.16へのバージョンアップをしつつ、twigを入れ替えることにした。

しかし、残念なことにEC-CUBE公式サイトでは、現在EC-CUBE3のバージョンアップデータが供給されていない。(2020年5月14日現在)

あちこち探し、
こちらのサイトを参考にさせていただきました。

指定のファイルのコードを一つ一つコツコツと入れ替えてバージョンアップを実施。
利用しているプラグインの動作に問題がないことを確認しつつ、次のステップへ。

twig バージョン 1.34はどこにある?

3.0.16内からtwigを取出して、3.0.15のtwigと入替えた方が、手っ取り早いです。とコミュニティーでのご意見を見て、そうだそうだ!と考えながら、公式サイトを探すものの、現在、EC-CUBE3のダウンロードができない

コミュニティーを調べて、Githubから1.34バージョンのデータをダウンロードする。

・ページ左の、Branch:3.xのボタンをクリック

・プルダウンしたメニューの「Tags」のタブをクリック

・v1.34.0を選んでダウンロード

・ファイルを解凍して

・vender/twig/twig/以下の中身すべてのファイルをそっくり入れ替える。

そして再び、

/app/cache/twig/production/admin

/app/cache/twig/production/default の中身を全部削除

事前にEC-CUBEを3.0.16にバージョンアップしたいたのでこちらで動作は回復しました。

正式にはtwigはcomposerでインストールしなければいけないようなので、かなりが強引にバージョンアップしました。

とりあえず解決。