Видимость debug панели yii2 на хостинге.
  • 3388

Как включить или отключить debug панель yii2 на хостинге.

Автор: admin | 10 июня (Вс.) 2018г. в 21ч.57м.

Когда yii2 используется на локальном компьютере, то очень полезным является инструмент панели дебаггинга , закрепленный в нижней части сайта. На локальном компьютере debug панель появляется по умолчанию, при
условии, что у нас установлены константы окружения во входном скрипте index.php:
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');​

Наличие этих констант значит, что приложение настроено для этапа разработки, поэтому когда нужно
выкладывать сайт на сервер, то их нужно закомментировать, чтобы сайт работал быстрее и не выводил
не нужную информацию при наличии ошибок посетителям сайта.

Тогда значение YII_ENV будет оприделено фреймворком как 'prod', а YII_DEBUG === false.

Тем не менее эти константы не влияют на показ дебаггера, если конечно мы сами не напишем условие,
что дебаггер будет показываться только когда YII_DEBUG === true или YII_ENV === 'dev'.
Хотя в basic приложении в конфиге web.php этот параметр уже прописан:

if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = [
        'class' => 'yii\debug\Module',
        // uncomment the following to add your IP if you are not connecting from localhost.
        //'allowedIPs' => ['127.0.0.1', '::1'],
    ];
    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        // uncomment the following to add your IP if you are not connecting from localhost.
        //'allowedIPs' => ['127.0.0.1', '::1'],
    ];
}

Также на показ панели влияет 'allowedIPs' => ['127.0.0.1', '::1']. Вот эти ip прописаны по умолчанию.
Поэтому на локалхост панель видна, а на сервере нет.

Как включить дебаг панель на хостинге.

Если нужно включить дебаггинг на хостингенужно сделать следующее:

В конфигурационном файле добавить в modules настройки модуля дебага:
'modules' => [
        //тут могут подключаться и другие модули
        
        'debug' => [
            'class' => 'yii\debug\Module',
            'allowedIPs' => ['*']
        ]

        
],​

Далее нужно разрешить загрузку модуля в предзагрузке bootstrap, чтобы панель загружалась в начале
работы приложения:

'bootstrap' => [
    'debug',//ключ из массива modules
],

Теперь дебаг панель появится на хостинге.

Ограничение доступа к debug панели.

Чтобы ограничить доступ к дебаггеру, нужно настроить свойство 'allowedIPs':
'allowedIPs' => ['*']//доступен всем
'allowedIPs' => ['127.0.0.1', '::1']//только на локальном компьютере
'allowedIPs' => ['ваш ip']//или указать свой ip
'allowedIPs' => ['192.168.0.*']//или разрешить все ip начинающиеся на 192.168.0.​

Как разрешить дебаг панель для админа.

Можно также разрешить панель для админа или другого пользователя. Так, например, если Вы
используете RBAC, то можно включать панель по разрешению rbac в конфиге:
'on beforeRequest' => function () {
        $debug = \Yii::$app->getModule('debug');

        if(!\Yii::$app->user->isGuest){
            if(\Yii::$app->user->can(\common\components\rbac\Rbac::PERMISSION_ADMIN_PANEL)){
                
                $debug->allowedIPs = ['*'];
            }
        }
    },​

Или без rbac по id юзера:

'on beforeRequest' => function () {
        $debug = \Yii::$app->getModule('debug');

        
        \Yii::$app->has('user', true) ? Yii::$app->get('user') : null;
        if(\Yii::$app->has('user', true)){
        //12 - это id пользователя
        $debug->allowedIPs = Yii::$app->user->id === 12 ? ['*'] : [''];
            
        }
    },

Есть и другие варианты подключения панели, но этого в большинстве случает достаточно.

Приветствую!

Меня зовут Сергей. Я - автор этого блога.

Если Вам был полезен материал на моем сайте, поддержите пожалуйста мой проект, чтобы о нем узнали другие люди - кликните plizz :) на иконку в соц. сети, чтобы поделиться материалом с другими.