EC-CUBE4 でシステムエラー画面を非表示にしてエラーを表示させる方法

EC-CUBE には「ページが見つかりません」や「システムエラー」など本来は Web サーバ側で用意すべきエラー画面も独自に用意されているが、カスタマイズしているとエラーログに記載されないシステムエラーが発生することがあるため、原因追及のために敢えてエラーを表示させるようにする方法を解説する。

EC-CUBE4 でシステムエラー画面を非表示にしてエラーを表示させる方法




1.Web サーバのエラー画面とは





ブラウザで指定の URL にアクセスした場合は、正常であればその URL のコンテンツがブラウザで表示されるが、そのページが存在しなければ Web サーバはステータスコード 404 を返すとともに、サーバ側で 404 の場合に表示する画面が用意されていればその HTML を返してブラウザが表示するようになっている。
もし 404 に相当する画面をサーバ側で用意していなければブラウザが独自に表示するようになっており、IE や Edge であれば「ページが見つかりません。」が表示される。

また、Web サーバが返すステータスコードには種別があり、プログラムミスや障害などサーバ側に問題がある場合は 500 を返すようになっている。

2.EC-CUBE4 のデフォルトエラー画面とは


EC-CUBE4 のデフォルトのエラー画面


EC-CUBE4 には初期インストール時から HTTP ステータスコードの 400 系とそれ以外のコードの場合にデザインされた独自のエラー画面が表示されるようになっており、HTTP ステータスコードが 500 の場合は上図のように「システムエラーが発生しました。」が表示されるようになっている。

本来であれば EC-CUBE とは別に Web サーバに HTTP ステータスコード が 500 が返したとき専用に画面を用意しなければならず、初期インストール時からエラー画面があるので利便性が高いが、開発時においては php.ini でログを表示するようにしていても上図の画面が表示されるためデバッグする面では不便である。

3.エラー画面の表示を変更する方法


EC-CUBE4 でエラー画面を詳細に表示させる


EC-CUBE4 ではシステムエラー画面になっても Web サーバのエラーログに表示されないことがあり、どこに問題があるかわからないがエラー画面に詳細ログを表示させることでデバッグに活用することができる。

エラー画面を変更するためには EC-CUBE を設置したディレクトリの直下にある .env を次のように変更する。

APP_ENV=prod
APP_DEBUG=0
 ↓
APP_ENV=dev
APP_DEBUG=1




.env を変更すると、上図のように EC-CUBE が採用しているテンプレートシステム「Symfony」のデバッグ画面が表示され、プログラムが実行された順番とともに問題があったファイル名と場所が表示されるようになる。

関連記事