EC-CUBE3でデバッグモードを利用する手順【index_dev.php不要】
先日ECCUBE3で構築されているサイトを触ることになったのですが、
- index_dev.php が無い!?
-
dump()
が使えない(本番環境と同じ設定になっている?) - Warningエラーが既存で大量発生していてローカル環境が見れない
というめまいの催すような環境だったのでデバッグモード設定の手順をまとめます。
ECCUBE3を触るときにindex_dev.phpを付けてデバッグするのが一般的だと思いますが、
毎回URL打つのは手間なので、URL変える必要なくデバッグモードを設定していきます。
デバッグモードを設定する手順
ECCUBEのconfig.ymlを修正
デバッグモードをconfigで設定できるようにします。
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()
メソッドであればどこに記載してもよいかと思います。
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エラーを無視したいので下記を設定します。
/**
* Twig integration for Silex.
*
* @author Fabien Potencier <[email protected]>
*/
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を切り替えることなくデバッグモードが使えるようになりました!
ECCUBE3のデバッグで困っている..という方は試してみてはどうでしょうか。
Author And Source
この問題について(EC-CUBE3でデバッグモードを利用する手順【index_dev.php不要】), 我々は、より多くの情報をここで見つけました https://qiita.com/xentok/items/0b7f2ab5f24340079183著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .