管理画面からサイトのログを確認する方法
プラグイン導入やカスタマイズを含めてサイトを運営していると「システムエラーが発生しました」という画面に遭遇することがあります。画面だけでは原因がわからないので、最短で原因にたどり着く方法はログの確認です。管理画面にログインできる状態なら、まずは以下の手順でエラー当日のログを開いてください。
- 管理画面にアクセスし、「設定>システム設定>ログ表示」の画面を開きます。
- 当日のファイルを指定して「読み込む」を押します。
- システムエラーが発生しましたと記載されている行を探してください。
※キャプチャは4系の画面ですが、3系でも流れは同じです。

行内にシステムエラーの原因が記載されているので、その行をもとにプログラムの確認を進めるか問い合わせに使用すると話がスムーズに進みます。
※システムエラーと言う文字を見つけても該当のエラーに関するログだとは限らないため、周辺にアクセスしたURLが記載されているかどうかご確認ください。
※ログが多いと初期画面から流れてしまっている可能性がありますので、行数を50行から増やして確認してください。
※ログをEC-CUBEコミュニティ等で共有する際はサイトのURLやレンタルサーバーのディレクトリがログに記載されていないかご注意ください。そういった情報はエラーには直接関係ないので伏字にすることを強く推奨します。
ログの1行から原因を読み解くコツ
EC-CUBEのログは1行に多くの情報が詰まっています。出力フォーマットはMonologFormatterLineFormatterで次のように定義されており、どの項目がどこに並ぶかを知っておくと原因の切り分けが速くなります。
[%datetime%] %channel%.%level_name% [%extra.session_id%] [%extra.uid%] [%extra.user_id%] [%extra.class%:%extra.function%:%extra.line%] - %message% %context% [%extra.http_method%, %extra.url%, %extra.ip%, %extra.referrer%, %extra.user_agent%]
行末の角括弧にHTTPメソッドとアクセスされたURL、IP、リファラ、ユーザーエージェントが並びます。「周辺のURLを確認」と書いたのはこのためで、同じ行の末尾にあるURLと、行頭のdatetime・level_name(ERROR/CRITICALなど)を突き合わせれば、どの操作で発生したエラーかを特定できます。
class:function:lineには例外が投げられたクラス・メソッド・行番号が入るため、カスタマイズやプラグインが原因の場合は、この位置を見ればどのファイルを調べればよいかがすぐにわかります。またログはフロント・管理画面それぞれのチャンネルに分かれて記録されるので、発生画面に合わせて対象ファイルを選ぶと余計な行を追わずに済みます。
FTPでログファイルを確認する方法
管理画面にアクセスできない場合はFTPやSSHでサーバーに接続し、var/log/ディレクトリ内を確認します。ここにログファイルが保存されているので、ファイルをダウンロードしてテキストエディタで開けば管理画面と同じ内容を確認できます。エラー画面すら表示されずログイン画面までたどり着けないケースでも、この方法なら原因の記録を追えます。
デバッグモードを使う方法も
ログを確認する他にも、検証用サイトであればデバッグモードを使用すると言った方法もあります。デバッグモードでは例外の内容やスタックトレースが画面に直接表示されるため、開発中の切り分けが速くなります。
本番サイトでもindex_dev.phpを設置することでデバッグモードを使用することができます。ただし、ウェブで公開しているサイトでは必ずIP制限をかけるなど外部からアクセスできない対応を行ってください。デバッグモードは内部情報を表示するため、無防備に公開すると新たなリスクになります。
4系本番環境でindex_dev.phpを使ってデバッグモードにする方法
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。