Я новичок в структуре yii. На моем сайте gii показана ошибка
Ошибка 403 У вас нет доступа к этой странице.
Я установил gii в файле конфигурации, как это
'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>'test123', 'ipFilters'=>array('192.168.0.101','127.0.0.1','::1'), ),
все же он показывает ошибку
Это единственная строка, которая работала для меня:
'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-адрес изменяется на сервер.
Если ваш сервер работает на том же компьютере, что и ваш клиент (браузер), вы запрашиваете страницу с самого локального хоста, поэтому ваш IP-адрес составляет 127.0.0.1, и настройки по умолчанию работают.
Если ваш сервер находится на другом компьютере, но в локальной сети (LAN), ваш IP-адрес обычно будет выглядеть примерно так: 192.168.1.20 для сервера. Вы можете найти его и настроить код.
Если ваш сервер находится через Интернет (WAN), то вы либо
Только если это самый последний (непредсказуемый динамический 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