エラーページにデバッグ情報を表示したい!
この記事では、開発時には便利なデバッグモードを設定・解除する方法を紹介しています。
本番モードのエラー画面

デバッグモードのエラー画面

さらにデバッグモード中は、変数の中身を確認できる「dump()」関数も使えるようになります。
カスタマイズに必須ともいえる関数ですので、合わせて使いこなせるようにしておきましょう。

デバッグモードの設定方法
デバッグモードは、ec-cubeのルートディレクトリ直下にある「.env」ファイルを少し修正するだけで簡単に設定できます。

「.env」ファイルの6〜7行目あたりを以下の通り修正します。
.envファイル 修正前
# This file is a "template" of which env vars needs to be defined in your configuration or in an .env file
# Set variables here that may be different on each deployment target of the app, e.g. development, staging, production.
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
###> symfony/framework-bundle ###
APP_ENV=prod
APP_DEBUG=0
#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
#TRUSTED_HOSTS=localhost,example.com
###< symfony/framework-bundle ###
・・・
.envファイル 修正後
# This file is a "template" of which env vars needs to be defined in your configuration or in an .env file
# Set variables here that may be different on each deployment target of the app, e.g. development, staging, production.
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
###> symfony/framework-bundle ###
#APP_ENV=prod
#APP_DEBUG=0
APP_ENV=dev
APP_DEBUG=1
#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
#TRUSTED_HOSTS=localhost,example.com
###< symfony/framework-bundle ###
・・・
- APP_ENV=prod
APP_DEBUG=0
の2行をコピーして次の行に追加 - コピペした2行を以下の通り修正
APP_ENV=dev
APP_DEBUG=1 - コピー元の2行は先頭に「♯」を付けてコメントアウト
APP_ENV
- 本番環境 → APP_ENV = prod
- 開発環境 → APP_ENV = dev
APP_DEBUG
- エラー時に最小限の表示を行う → APP_DEBUG = 0
- エラー時に詳細表示を行う → APP_DEBUG = 1
修正が終わったファイルをサーバーにアップし、デバッグモードの設定は終了です。
念のため管理画面からキャッシュを削除し、エラーページが変わっているか確認しておきましょう。

本番環境ではデバッグモードの解除を忘れずに
デバッグモードのままでも通常表示はきちんと行われるので、本番環境に戻すのを意外と忘れがち。
ただデバッグモードでは、ページがインデックス登録されないなどの問題が発生してしまいます。本番環境に戻す(今回追記した2行の先頭に「♯」を付けてコメントアウトし、元の2行の「♯」を外す)のを忘れないようにしましょう。
デバッグモードを解除したときにエラーが発生する場合
デバッグモードでカスタマイズを行ったあと本番環境に戻すと、稀にエラー画面が表示される場合がありました。(デバッグモード中では特にエラーは出ていないにも関わらず。)
そんなときはキャッシュを削除すると、解消される場合があります。
キャッシュは「EC-CUBE管理画面」→「コンテンツ管理」→「キャッシュ管理」で削除できます。
が、エラーの発生状況によってはそもそも管理画面にすら入れないパターンもあります。
その場合は、ちょっと面倒ですがサーバーにSSH接続をして、ルートディレクトリに移動した状態(Xserverならpublic_htmlに移動した状態)で以下コマンドを打ち込むとキャッシュを削除できます。
bin/console cache:clear --no-warmup
XserverでSSH接続する方法はこちら
もしレンタルサーバーのXserverを使っていれば、以下記事でSSH接続方法を解説しています。
カスタマイズ時によくわからないエラーが発生した場合は、とりあえずキャッシュを削除する癖をつけておくと良さそうです。