[初回公開] 2021年02月27日
EC-CUBE には「ページが見つかりません」や「システムエラー」など本来はウェブサーバ側で用意すべきエラー画面も予め用意されているが、カスタマイズしているとエラーログではわからないシステムエラーが発生することがあるため、原因追及のためにデバッグ用のエラー画面を表示する方法を紹介する。
このページの目次
1.ウェブサーバが返すエラー画面とは
ウェブサーバが返すエラー画面とは、ブラウザでアクセスした URL に該当するページが無い場合や、ページがあってもプログラムの問題で正常に表示できない場合に特定の表示を行うものである。
本来であればウェブサーバにエラーコードごとにエラー画面となる HTML ファイルを用意する必要があるが、ウェブサーバにエラー画面が無い場合はブラウザ独自のエラー画面が表示されるようになっている。
1-1.エラーコードごとに用意されている場合
ブラウザで指定の URL にアクセスした場合は、正常であればその URL のコンテンツがブラウザで表示される。
しかし、そのページが存在しなければウェブサーバはブラウザにステータスコード 404 を返すとともに、サーバが 404 を検知すると 404 専用の HTML を返してブラウザが表示するようになっている。
ウェブサーバが検知するステータスコードは正常であれば 200、アクセスに問題がある場合は 400 系、アクセスに制限がある場合は 300 系、プログラムに問題がある場合は 500 系を返すようになっている。
1-2.エラー画面を用意していない場合
ウェブサーバにエラー画面を用意していない場合はブラウザにはステータスコードが返るだけとなり、ブラウザはステータスコードに応じて独自に用意された内容を表示するようになっている。
ブラウザの IE や Edge であれば「ページが見つかりません。」が表示される。
1-3.エラー画面が表示されることの危険性
エラー画面はアクセスやページに問題があることを示す 1 つの確認手段ではあるが、表示されることで危険性もある。
例えばウェブサーバのバージョン情報が表示されるようになっていれば、そのバージョンの脆弱性を利用した攻撃を受ける可能性がある。
また、プログラムを利用している場合はプログラムのエラーの内容やファイル名などが表示されるので、プログラム情報の漏洩やハッキングや改ざんといって被害にもつながる恐れがある。
そのため、EC-CUBE などオープンソースのツールでは詳細なエラーが表示されないように予めエラー画面が用意されている場合がある。
2.EC-CUBE4 でシステムエラー画面が表示される様子
EC-CUBE4 には初期インストール時からウェブサーバが検知する HTTP ステータスコードが 400 系とそれ以外のコードの場合に下図のような独自のエラー画面が表示されるようになっている。
これによりエラー画面の実装を忘れていても利用者にエラーの内容までは伝わらないので攻撃につながる情報は隠すことができる。
反面、カスタマイズしている途中でエラーが発生しても上図の画面になり、どこに原因かわかりづらいため、この画面を非表示にして敢えてエラーを表示させてデバッグする方法が次となる。
3.EC-CUBE4 でデバッグ表示させる方法
EC-CUBE4 ではシステムエラーの画面になってもウェブサーバのエラーログに残らないエラーもあり、どこに問題があるかわからず原因追及が難しくなることがある。
そこで、下図のようにデバッグ表示させることでエラーの内容と、プログラムのどこに問題があるかも表示させて原因追及しやすくすることができる。
デバッグ表示するためには EC-CUBE を設置したディレクトリの直下にある .env を次のように変更する。
APP_ENV=prod APP_DEBUG=0 ↓ APP_ENV=dev APP_DEBUG=1
.env を変更すると、上図のように EC-CUBE が採用しているテンプレートシステム「Symfony」のデバッグ画面が表示される。
プログラムが実行された順番とともに問題があったファイル名と場所が表示されるのが確認できる。
また、カスタマイズなど EC-CUBE でデバッグ表示する必要が無ければ、同じく .env ファイルの変更した値を 0 に戻して不要な情報を与えないようにする必要がある。
関連記事
EC-CUBE で店舗や在庫場所の位置座標を登録して地図情報の中心から近い順番に表示する方法
EC-CUBE はインターネットショップのツールで地図や位置座標は関係しないと思われがちだが、カスタマイズして店舗や在庫の場所を位置座標として登録することで Google Map や Mapbox など地図サービスと…
EC-CUBE で新着情報やお知らせの表示件数を変更する方法
EC-CUBE の過去のバージョンでは新着情報やお知らせは一定の件数を上回ると古い情報が表示されなくなり別途バックナンバーを表示するカスタマイズが必要だったが、最近の EC-CUBE は古いお知らせ情報…
EC-CUBE のカラムを増やすメリットと入力項目をカスタマイズする方法
EC-CUBE は無料で利用できるオープンソースの EC サイトプログラム群で、自由にカスタマイズできるのが特徴だが、今回は管理画面でデザインを変更するだけでなく、より利便性を高めるために直接プログ…