Help us understand the problem. What is going on with this article?

EC-CUBE3でデバッグモードを利用する手順【index_dev.php不要】

先日ECCUBE3で構築されているサイトを触ることになったのですが、

  • index_dev.php が無い!?
  • dump()が使えない(本番環境と同じ設定になっている?)
  • Warningエラーが既存で大量発生していてローカル環境が見れない

というめまいの催すような環境だったのでデバッグモード設定の手順をまとめます。

ECCUBE3を触るときにindex_dev.phpを付けてデバッグするのが一般的だと思いますが、
毎回URL打つのは手間なので、URL変える必要なくデバッグモードを設定していきます。

デバッグモードを設定する手順

ECCUBEのconfig.ymlを修正

デバッグモードをconfigで設定できるようにします。

app/config/eccube/config.yml
auth_magic: xxxxx
password_hash_algos: sha256
shop_name: the_shop
force_ssl: 1
admin_allow_host: {  }
cookie_lifetime: 0
locale: ja
timezone: Asia/Tokyo
eccube_install: 1
option_favorite_product: 0
+ debug: true

Application側でconfigを読み込み

yamlで設定した値を読み、config: trueであればsymfonyのデバッグハンドラーを呼び出しています。
Application.phpのinitialize()メソッドであればどこに記載してもよいかと思います。

src/Eccube/Application.php
    public function initialize()
    {
    //
    // ...
    //
+    if (isset($this['config']['debug']) && $this['config']['debug']) {
+      $this['debug'] = true;
+      Debug::enable(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_WARNING);
+    }

TwigServiceProviderの設定変更

これまででデバッグモード自体は有効になりましたが、
Twig上で発生している既存のNoticeやWarningエラーを無視したいので下記を設定します。

vendor/silex/silex/src/Silex/Provider/TwigServiceProvider.php
/**
 * Twig integration for Silex.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 */

class TwigServiceProvider implements ServiceProviderInterface
{
    public function register(Application $app)
    {
        $app['twig.options'] = array();
        $app['twig.form.templates'] = array('form_div_layout.html.twig');
        $app['twig.path'] = array();
        $app['twig.templates'] = array();

        $app['twig'] = $app->share(function ($app) {
            $app['twig.options'] = array_replace(
                array(
                    'charset' => $app['charset'],
                    'debug' => $app['debug'],
-                    'strict_variables' => $app['debug'],
+                    'strict_variables' => false,
                ), $app['twig.options']
            );


これでURLを切り替えることなくデバッグモードが使えるようになりました!

Image201905201138.png

ECCUBE3のデバッグで困っている..という方は試してみてはどうでしょうか。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away