В Yii 2 во вновь созданном приложении в режиме разработки по умолчанию внизу страницы отображается панель отладчика, которая выглядит вот так:
Есть, правда, одна особенность - по умолчанию она отображается только при просмотре сайта с локального компьютера, то есть - с адреса 127.0.0.1. Лично я же использую виртуальную машину с Ubuntu Server, на котором и крутится приложение Yii 2 - а сама разработка идет из-под Windows. То есть, хост уже не локальный. И полосы отладчика не видно...
Поиски в Гугле довольно быстро раскрыли источник проблемы - в конфигурации надо дополнительно указать параметр allowedIPs, где перечислить допустимые IP.
Однако, чтобы найти где именно надо внести правки, ушло прилично времени. В одном месте (на Тостере) даже промелькнуло, что для отображения тулбара дебаггера надо включить SEO-ссылки через urlManager. Но все оказалось проще, и красивые ссылки не нужны (но если включить, то не мешают).
Решение проблемы
Итак, на странице официальной документации по Yii 2 написано, что для активации тулбара надо в конфигурации добавить блок
'bootstrap' => ['debug'],
'modules' => [
'debug' => [
'class' => 'yii\debug\Module',
'allowedIPs' => ['1.2.3.4', '127.0.0.1', '::1']
]
]
На самом же деле в файле config/web.php уже есть необходимый блок, он выглядит вот так:
if (YII_ENV_DEV) {
// configuration adjustments for 'dev' environment
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [
'class' => 'yii\debug\Module',
];
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
];
}
Здесь надо добавить строку, в которой будет задан список IP-адресов, на которых будет работать дебаггер:
$config['modules']['debug']['allowedIPs'] = ['192.168.22.45', '192.168.22.46', '192.168.1.12'];
При задании ограничений можно использовать маски, то есть, чтобы позволить видеть дебаггер с любого компьютера, достаточно написать:
$config['modules']['debug']['allowedIPs'] = ['*'];
У меня же, в целях хоть какой-то безопасности, указано:
$config['modules']['debug']['allowedIPs'] = ['192.168.*'];
Итого, приведенный выше блок должен иметь вот такой вид (с учетом вашего списка IP-адресов):
if (YII_ENV_DEV) {
// configuration adjustments for 'dev' environment
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [
'class' => 'yii\debug\Module',
];
$config['modules']['debug']['allowedIPs'] = ['192.168.*'];
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
];
}
После внесенных изменений дебаггер появляется.
Кстати, дебаггер в Yii 2 - это не только тублар внизу экрана. Можно зайти по адресу /index.php?r=debug (/debug/ при включенных "красивых" УРЛах), и увидеть мощный инструмент отладки, в котором есть очень полезных утилит, включая логи Yii 2, логи обращений к БД и профилировщик. (Чтобы открыть дебаггер, не обязательно вводить адрес вручную - достаточно кликнуть на одной из информационных надписей в тулбаре дебаггера, к примеру - на времени генерации страницы.)
Есть, правда, одна особенность - по умолчанию она отображается только при просмотре сайта с локального компьютера, то есть - с адреса 127.0.0.1. Лично я же использую виртуальную машину с Ubuntu Server, на котором и крутится приложение Yii 2 - а сама разработка идет из-под Windows. То есть, хост уже не локальный. И полосы отладчика не видно...
Поиски в Гугле довольно быстро раскрыли источник проблемы - в конфигурации надо дополнительно указать параметр allowedIPs, где перечислить допустимые IP.
Однако, чтобы найти где именно надо внести правки, ушло прилично времени. В одном месте (на Тостере) даже промелькнуло, что для отображения тулбара дебаггера надо включить SEO-ссылки через urlManager. Но все оказалось проще, и красивые ссылки не нужны (но если включить, то не мешают).
Решение проблемы
Итак, на странице официальной документации по Yii 2 написано, что для активации тулбара надо в конфигурации добавить блок
'bootstrap' => ['debug'],
'modules' => [
'debug' => [
'class' => 'yii\debug\Module',
'allowedIPs' => ['1.2.3.4', '127.0.0.1', '::1']
]
]
На самом же деле в файле config/web.php уже есть необходимый блок, он выглядит вот так:
if (YII_ENV_DEV) {
// configuration adjustments for 'dev' environment
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [
'class' => 'yii\debug\Module',
];
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
];
}
Здесь надо добавить строку, в которой будет задан список IP-адресов, на которых будет работать дебаггер:
$config['modules']['debug']['allowedIPs'] = ['192.168.22.45', '192.168.22.46', '192.168.1.12'];
При задании ограничений можно использовать маски, то есть, чтобы позволить видеть дебаггер с любого компьютера, достаточно написать:
$config['modules']['debug']['allowedIPs'] = ['*'];
У меня же, в целях хоть какой-то безопасности, указано:
$config['modules']['debug']['allowedIPs'] = ['192.168.*'];
Итого, приведенный выше блок должен иметь вот такой вид (с учетом вашего списка IP-адресов):
if (YII_ENV_DEV) {
// configuration adjustments for 'dev' environment
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [
'class' => 'yii\debug\Module',
];
$config['modules']['debug']['allowedIPs'] = ['192.168.*'];
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
];
}
После внесенных изменений дебаггер появляется.
Кстати, дебаггер в Yii 2 - это не только тублар внизу экрана. Можно зайти по адресу /index.php?r=debug (/debug/ при включенных "красивых" УРЛах), и увидеть мощный инструмент отладки, в котором есть очень полезных утилит, включая логи Yii 2, логи обращений к БД и профилировщик. (Чтобы открыть дебаггер, не обязательно вводить адрес вручную - достаточно кликнуть на одной из информационных надписей в тулбаре дебаггера, к примеру - на времени генерации страницы.)
Для активации Gii надо сделать такие же корректировки, то есть строки конфига для Gii будут выглядеть как:
ОтветитьУдалить$config['bootstrap'][] = 'gii';
$config['modules']['gii']['class'] = 'yii\gii\Module';
$config['modules']['gii']['allowedIPs'] = ['192.168.*'];
Актуально для Yii 2.0.4, который крутится на виртуальной машине с Ubuntu Server 14.04 LTS и PHP 5.5.9.
Хорошая статья, очень помогла разобраться.
ОтветитьУдалитьСпасибо.
Сделал как написано, но вылетает эксепшен:
ОтветитьУдалитьReflectionException
Class yii\debug\Module does not exist
Не подскажете что может быть? Уже два дня не могу решить.
Нет, с таким вроде пока не встречался.
УдалитьНо строка Class yii\debug\Module does not exist говорит о том, что ядро не смогло найти модуль отладки. То есть, либо путь указан неверно, либо модуль физически отсутствует. Стоит проверить визуально.
Плюс вот тема на форуме была, может чем поможет - http://yiiframework.ru/forum/viewtopic.php?t=18421