今回は EC-CUBE4 のトラブルシュートについて書いてみたいと思います。

yaml ファイルの編集時のトラブル

よく「やりがち」なバックアップファイルを同フォルダ内に作成する。
この状態でキャッシュをクリアするとエラー(同一キーが重複する為)になります。

(yaml ファイル によっては、正常に動作する場合もあります。)

このような時は、一度落ち着いて、バックアップを戻し(元の構成)
コンソールより、キャッシュクリアのコマンドを実行します。

コマンド:php bin/console cache:clear –no-warmup

《回避方法》

  • バックアップを同一フォルダ内に作成しない事

yaml ファイルに限らずですが、バックアップを同一フォルダ内に作成すると
誤動作要因、公開フォルダ内であれば、セキュリティ面での不安も発生します。
他には、yaml 構文を誤って設定した場合も、構文エラーとなります。同様にバックアップファイルから戻して、キャッシュをクリアしましょう。

ログファイル

標準状態の 「monolog.yml」 設定を見ると

  • action_level: error
  • passthru_level: info

となっています。
これは「error」以上の時に、info までのログを出力する事になります。
この状態でログが出力されるという事は、何らかのエラーが発生している事を意味します。
エラーの内容は様々で、軽微なものから重篤なものも含まれます。
内容を確認し、問題への対処を行います。

とはいえ、殆どはプラグインや本体側が出力していますので、この辺りは各ベンダーに頑張って貰いたい所です。

なお、ログファイルが大量にあり困る場合は「monolog.yml」 の設定を変更してみると良いかと思います。
対象ファイル:app/config/eccube/packages/prod/monolog.yml
標準状態では、max_files の値は 60 で設定されている(約2カ月分)ので 30 (約1カ月分)に変更することで半分になります。
設定を変更した場合は、キャッシュのクリアが必要となります。

CSVファイルのDL時に全行出力できない

この時エラーログを確認し、OutOfMemory が発生している場合
EC-CUBE が原因である可能性が高いと考えられます。

https://github.com/EC-CUBE/ec-cube/issues/4435
※ 但し、上記対策だけでは不十分な場合もあります。

暫定的な対応としては、PHP(php.ini) の memory_limit 設定を大きくする事が考えられます。
PHP標準の設定では memory_limit は 128M となっているので、256M 程度に変更するのは有効かなと思います。あまり大きくしすぎると、別の問題が発生する可能性があるので注意が必要です。

根本的な解決は、EC-CUBE 開発陣に頑張ってもらいたい所です。

デバックモード

※ 本公開後は勿論デバックモードへの変更はダメですよ。

.env 内の設定を変更します。
変更は、以下の2か所となります。

  • APP_DEBUG
  • APP_ENV

《通常モード》

APP_DEBUG=0
APP_ENV=prod

《デバックモード》

APP_DEBUG=1
APP_ENV=dev

.env を編集保存後、キャッシュをクリアします。
キャッシュクリア後、デバックモードになると、画面右下にアイコンが表示されるようになります。

アイコンをクリックするとツールバーが展開されます。

ツールバーの各アイコンをマウスオーバー、クリックすると詳細な情報を表示してくれます。
これらの情報から問題に辿り着く時間短縮に期待を持てます。

他にも色々あると思いますが、一例としてご紹介いたしました。
引き続き、どうぞよろしくお願いいたします。