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ツールバーについては活用すると非常に便利ですので、また別の記事でご紹介したいと思います。

 

 


関連するカスタマイズ

Your proxy directory “/var/www/src/Eccube/..... SSHからマイグレーションなどapp/consoleのコマンドを実行しようとした際に、ドクトリンのキャッシュファイルを書き込めないために発生するエラーです。 通常app/cache/doctrine/proxiesは所有者もグループもapacheとなるため、コマンドラインから他のユーザ...
Twig内で文字列の一部分を切り出す方法 Slice使用... twigテンプレート内で文字列の一部を切り出したい時があります。 そんな時はsliceフィルタを使用してtwig内だけで切り出しを実行することが可能です。 2文字目以降を切り出す(1文字目を削除) sliceフィルタの第1引数は開始位置です。 ProductClass.code|sl...
メーカープラグインのメーカー一覧を取得する方法... メーカープラグインを使用される方が多いと思います。 メーカーの一覧を表示したい場合は次のようにメーカープラグインのレポジトリクラスでfindByすることで取得が可能です。 Controllerなどで使える実際のコード // メーカーのレポジトリを使用する $Makers = $app-&...
基本税率を切り捨て、切り上げ、四捨五入に変更... 開発メンバー全員のルールを揃えておくことが重要です。 dtb_tax_ruleテーブルのcalc_ruleの設定値は次の表の通りです。 calc_rule 方式 1 四捨五入 2 切り捨て 3 切り上げ これをマイグレーションで...