yii2にはモダンフレームワークらしくイカしたデバッグツールがついてます。
しかし標準だとローカルIPからのアクセス限定で、VPSやVagrantで開発しようとした時に動かないので困ってしまいます。
どこかで設定するのかさがしてみると、yii2-debug/Module.php
で直接IPが指定されてるのが伺えます
yii2-debug/Module.php
<?php
/**
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
namespace yii\debug;
use Yii;
use yii\base\Application;
use yii\base\BootstrapInterface;
use yii\helpers\Url;
use yii\web\View;
use yii\web\ForbiddenHttpException;
/**
* The Yii Debug Module provides the debug toolbar and debugger
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
*/
class Module extends \yii\base\Module implements BootstrapInterface
{
/**
* @var array the list of IPs that are allowed to access this module.
* Each array element represents a single IP filter which can be either an IP address
* or an address with wildcard (e.g. 192.168.0.*) to represent a network segment.
* The default value is `['127.0.0.1', '::1']`, which means the module can only be accessed
* by localhost.
*/
public $allowedIPs = ['127.0.0.1', '::1']
どこかで値を再代入して解決することもできなくはないはずですが、Yiiのモジュール(コンポーネント)は初期化時にpublicなプロパティをオーバーライドできるという特性があります。なので、モジュールの定義をしている設定ファイルに値を指定することで対象のプロパティを再設定することが出来ます。
config/web.php
$config = [
if (YII_ENV_DEV) {
// configuration adjustments for 'dev' environment
$config['bootstrap'][] = 'debug';
- $config['modules']['debug'] = 'yii\debug\Module';
+ $config['modules']['debug'] = [
+ 'class' => 'yii\debug\Module',
+ 'allowedIPs' => ['1.2.3.4', '127.0.0.1', '::1'] // '*'ですべてのIPからのアクセスでも動作するようにできる
+ ];
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = 'yii\gii\Module';
これで1.2.3.4
からのアクセスでもyii2-debugが動作するようになります。
DBやキャッシュのコンポーネントも同じように設定することができるのでYii2を使う上ではぜひ覚えておきたい手法です。