gii не работает в yii

Я новичок в структуре yii. На моем сайте gii показана ошибка

Ошибка 403 У вас нет доступа к этой странице.

Я установил gii в файле конфигурации, как это

'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>'test123', 'ipFilters'=>array('192.168.0.101','127.0.0.1','::1'), ), 

все же он показывает ошибку

Solutions Collecting From Web of "gii не работает в yii"

Это единственная строка, которая работала для меня:

 'ipFilters'=>array($_SERVER['REMOTE_ADDR']), 

Вы можете установить …

 'ipFilters' => false 

Из документов http://www.yiiframework.com/doc/api/1.1/GiiModule#ipFilters-detail

Если вы хотите разрешить всем IP-адресам доступ к gii, вы можете установить это свойство как ложное (НЕ ДЕЛАЙТЕ ЭТО, ЕСЛИ ВЫ НЕ ЗНАЕТЕ ПОСЛЕДСТВИЯ !!!)

Чтобы исправить это, загляните в свой основной файл конфигурации для раздела модулей для Gii и добавьте

массив ipFilters, который включает ваш собственный IP:

// protected / config / main.php

return array (

 ... 'modules' => array( 'gii' => array( 'class' => 'system.gii.GiiModule', 'password' => 'Enter Your Password Here', 'ipFilters' => array('127.0.0.1', '192.168.1.7'), // EDIT TO TASTE ), ... 

Свойство ipFilters может включать в себя столько элементов, сколько вам нравится, и они могут быть прямыми

IP-адреса или подстановочные знаки, такие как «192.168.1. *».

Адреса IPv6 также поддерживаются, если базовая платформа поддерживает его, а «:: 1» –

представляет localhost (что может потребоваться в некоторых конфигурациях).

Будьте осторожны, чтобы не открывать Gii слишком широкой аудитории, чтобы она не стала угрозой безопасности.

Примечание: Yii 1.1.6 добавляет фильтр по умолчанию непосредственно в файл конфигурации запаса:

// Если удалено, Gii по умолчанию использует только localhost. Измените внимательно, чтобы попробовать.

 'ipFilters'=>array('127.0.0.1','::1'), 

надеюсь, решена ваша проблема ..

Следуя от хорошего ответа sandy8086. Если ваш удаленный хост имеет двойную структуру (IPv6 / IPv4), тогда у вас может быть динамический адрес IPv6, автоматически назначенный в вашем префиксе диапазона подсети. Метод IPv4 для использования подстановочного символа '*' также может быть принят с адресом IPv6, таким образом: «ab01: 1234: 5678: abcd: *», если у вас есть префикс / 64, это будет соответствовать любому адресу в вашей сети IPv6 , Это сработало для меня и стало, когда у меня возникли проблемы с «Ошибка 403», и пенни упали, когда я обнаружил, используя Yii :: app () -> request-> userHostAddress, с которым я подключался через IPv6.

Почему я получаю ошибку 403 при попытке использовать Gii?

Если приведенная выше ссылка не помогает, попробуйте просмотреть файл appplication.log в папке времени выполнения, чтобы увидеть, что происходит неправильно.

Я получал ту же ошибку. Я проверил свой IP-адрес с помощью Yii::app()->request->userHostAddress ; оказывается, что это возвращает адрес IPv6, который выглядит чем-то вроде этого ab01::1 . Это может быть поведение, особенно если вы используете Safari (на OS X … Chrome на OS X показывает нормальный 127.0.0.1 IP. Странно странное поведение из этих двух браузеров WebKit).

Итак, просто поместите Yii::app()->request->userHostAddress в одно из ваших представлений, а затем скопируйте результат с вывода и вставьте его в config / main.php:

  'gii'=>array( ... // If removed, Gii defaults to localhost only. Edit carefully to taste. 'ipFilters'=>array('127.0.0.1','192.168.1.*','ab01::1','::1'), ), 

У меня была очень похожая проблема. Для меня это было то, что моя учетная запись пользователя не имела writeaccess в моей папке PHP session_save_path. Когда я просмотрел его в Windows 7, он сказал мне, что мне нужно разрешение, и он предоставит его, если я выберу ОК. Я сделал. Все было исправлено.

попробуй это

  'gii' => array( 'class' => 'system.gii.GiiModule', 'password' => 'pasword', 'ipFilters'=> false, 'generatorPaths' => array( 'bootstrap.gii' ), ), 

Подумайте, где находится ваш сервер разработки (та же обработка, LAN, WAN) и как ваш IP-адрес изменяется на сервер.

  1. Если ваш сервер работает на том же компьютере, что и ваш клиент (браузер), вы запрашиваете страницу с самого локального хоста, поэтому ваш IP-адрес составляет 127.0.0.1, и настройки по умолчанию работают.

  2. Если ваш сервер находится на другом компьютере, но в локальной сети (LAN), ваш IP-адрес обычно будет выглядеть примерно так: 192.168.1.20 для сервера. Вы можете найти его и настроить код.

  3. Если ваш сервер находится через Интернет (WAN), то вы либо

    • статический IP-адрес (если вам повезет)
    • или динамический IP-адрес в пределах фиксированного диапазона,
    • или, что еще хуже, более или менее непредсказуемый динамический IP-адрес.

Только если это самый последний (непредсказуемый динамический IP-адрес), я буду следовать этому ответу schmunk, который также указывает на риск.

Использование $_SERVER['REMOTE_ADDR'] мне кажется ненужным.

Удостоверьтесь, что в нижней части конфигурационного файла нет предустановленной конфигурации. Они перезапишут все, что вы добавили выше:

 if (YII_ENV_DEV) { // configuration adjustments for 'dev' environment $config['bootstrap'][] = 'debug'; $config['modules']['debug'] = 'yii\debug\Module'; $config['bootstrap'][] = 'gii'; $config['modules']['gii'] = 'yii\gii\Module'; } 

Должен стать (например, позволяет кому угодно):

 if (YII_ENV_DEV) { // configuration adjustments for 'dev' environment $secure = ['allowedIPs' => ['*']]; $config['bootstrap'][] = 'debug'; $config['modules']['debug'] = ['class' => 'yii\debug\Module'] + $secure; $config['bootstrap'][] = 'gii'; $config['modules']['gii'] = ['class' => 'yii\gii\Module'] + $secure; } 
 if (YII_ENV_DEV) { $config['bootstrap'][] = 'debug'; $config['modules']['debug'] = [ 'class' => 'yii\debug\Module', ]; $config['bootstrap'][] = 'gii'; $config['modules']['gii'] = [ 'class' => 'yii\gii\Module', ]; } 

После замены его, используя этот код по умолчанию,

и пользователь этот url.

HTTP: //localhost/basic/web/index.php г = GII