EC-CUBE3のデバッグモードとは?

EC-CUBE3ではエラーが起きた場合、ログファイルに記録を残しますが画面上には何も表示されず「真っ白な画面」になるか「システムエラー」とだけ表示されます。

これはエラー内容を隠すことでセキュリティ低下を避ける意図があり、WordPressなど多くのCMSと同様の挙動となります。CMS以外のPHPサイトでも通常は制作者が”敢えて”エラーを表示しないようにしています。

システムエラーが発生しました

 

ただし開発中はエラーが表示されないとどこで問題が起こっているのかが分かりません。そこで活躍するのがデバッグモードで、エラーが起こっているクラスやメソッドをバックトレースしてくれます。

EC-CUBE3の開発は難しいという声をたまに聞きますが、このデバッグモードにする方法を知らないために苦労している方が多いのだと思います。

 

デバッグモードにする方法

最も簡単な方法はindex_dev.phpを経由してアクセスする方法です。サイトのURLがhttp://xxx.comと仮定するとhttp://xxx.com/index_dev.phpへアクセスします。ページ下部にSymfonyツールバーが表示されればデバッグモードになっています。

ローカル環境以外の開発ではIPアドレスを追加

次のようなメッセージが表示された場合は、自分のIPアドレスをindex_dev.phpへ登録する必要があります。

You are not allowed to access this file. Check index_dev.php for more information.

index_dev.phpを開いて、許可IPの配列へ自分のIPアドレスを追加してください。(ローカルなど開発環境によっては必要ありません。)

IPアドレスはこちらのページで確認可能です。

$allow = array(
    '127.0.0.1',
    'fe80::1',
    '::1',
    '自分のIPアドレス',//この行を追加する
);

※この方法でエラーを確認する場合、正常に動作しているページ(トップページ等)からデバッグモードを実行するようにしてください。エラーのページに直接index_dev.phpを追加すると、エラーの内容が変わってしまう可能性があります。

Symfonyツールバーとは?

通常EC-CUBE3はindex.phpにより通常モードで実行されますがindex_dev.phpを経由することでdebug用のフラグがONになり、エラーの詳細やデバッグに便利なSymfonyツールバーがページ下部に表示されます。

Symfonyツールバーについては活用すると非常に便利ですので、また別の記事でご紹介したいと思います。