Yii2 Gii Запрещенный код 403 Вам не разрешен доступ к этой странице

У меня есть машина server, и я пытаюсь разрешить IP-адрес моего ПК использовать gii.

IP-адрес моего ПК 192.168.1.101

IP-адрес машины server192.168.1.102.

Я использовал composer для установки gii module.

Вот как выглядят мои настройки composer.json:

"require": {
        "php": ">=5.4.0",
        "yiisoft/yii2": "*",
        "yiisoft/yii2-bootstrap": "*",
        "yiisoft/yii2-swiftmailer": "*",
        "yiisoft/yii2-gii": "*"
    },
    "require-dev": {
        "yiisoft/yii2-codeception": "*",
        "yiisoft/yii2-debug": "*",
        "yiisoft/yii2-gii": "*",
        "yiisoft/yii2-faker": "*"
    },

Я использовал php init и composer update и php yii migrate.

Я также вошел в систему в frontend.

Это содержимое файла main.php:

return [
    'id' => 'app-frontend',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['gii'],
    'controllerNamespace' => 'frontend\controllers',
    'components' => [
        'user' => [
            'identityClass' => 'common\models\User',
            'enableAutoLogin' => true,
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
    ],
    'params' => $params,
    'modules' => [
        'gii' => [
            'class' => 'yii\gii\Module',
            'allowedIPs' => ['127.0.0.1', '::1', '192.168.1.101'],
            'password' => '123456'
        ],
    ],
];

person Ionut Flavius Pogacian    schedule 11.10.2014    source источник


Ответы (8)


У меня была аналогичная проблема, и я пробовал все разные изменения ipFilter. В конце концов мне нужно было добавить это в main-local.php. Что было странно, потому что у меня было расширенное приложение, а настройки были для базовой настройки yii2.
http://www.yiiframework.com/doc-2.0/guide-start-gii.html

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

$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = 'yii\gii\Module';}

Я также должен отметить, что я добавил это в main.php

    'modules' => [
    'gii' => [
        'class' => 'yii\gii\Module',
        'allowedIPs' => ['127.0.0.1', '::1', '192.168.1.*', 'XXX.XXX.XXX.XXX'] // adjust this to your needs
    ],
],
person johnsnails    schedule 06.11.2014
comment
см. мой ответ ниже, добавления 'allowedIPs' в main-local.php должно быть достаточно - person mfgmicha; 03.02.2016
comment
У меня была похожая проблема, когда я загрузил приложение на рабочий сервер, похоже, если вы не укажете allowedIPs в $config['modules']['debug'] = [, он по умолчанию использует локальный хост, поэтому я не смог получить доступ к отладке на производстве, что было решено путем добавления allowedIPs - person Ripper; 10.01.2017

После инициализации в режиме dev мне пришлось изменить свой \backend\config\main-local.php и добавить «разрешенные IP-адреса».

Разрешает ВСЕ IP-адреса, поэтому рекомендуется только для внутреннего использования разработчиками! Приспособьтесь к вашим потребностям.

$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [
    'class' => 'yii\gii\Module',
    'allowedIPs' => ['*'],
];
person mfgmicha    schedule 03.02.2016

Измените ваш /common/config/main-local.php следующим образом:

    return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=YourDatbase',
            'username' => 'YourDBUserName',
            'password' => 'YourDBPassword',
            'charset' => 'utf8',
        ],
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'viewPath' => '@common/mail',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => true,
        ],
    ],
    // Add this to get debug and gii to work
    'modules' => [
        'gii' => [
            'class' => 'yii\gii\Module',
             // permits any and all IPs
             // you should probably restrict this
            'allowedIPs' => ['*']
        ],
        'debug' => [
            'class' => 'yii\debug\Module',
             // permits any and all IPs
             // you should probably restrict this
            'allowedIPs' => ['*']
        ]
    ]
];
person user2161402    schedule 25.03.2016
comment
Спасибо, я боролся с этим, когда пытался получить доступ к gii при запуске сервера разработки в докере. - person Hamfri; 30.06.2021

В текущей версии Yii вы должны сделать это в web.php, чтобы разрешить доступ к Gii:

//$config['modules']['gii'] = 'yii\gii\Module'; // <--- replace this line
$config['modules']['gii'] = [
    'class' => 'yii\gii\Module',
    'allowedIPs' => ['XXX.XXX.XXX.XXX', 'YYY.YYY.YYY.YYY']
];
person Doychin Dokov    schedule 16.04.2015
comment
Верный! В Yii 2.0 настройки разрешенного IP-адреса должны быть включены в web.php вместо console.php. - person andreapavan; 01.05.2015
comment
Предполагается, что вы используете шаблон Yii2 Basic, немного отличающийся от расширенного шаблона Yii2. В расширенном шаблоне нет web.php. - person johnsnails; 08.10.2015

Код работал у меня (yii 2.0.8) после добавления восклицательного знака (!) перед YII_ENV_DEV внутри if part::

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

     $config['bootstrap'][] = 'gii';
     $config['modules']['gii'] = [
          'class' => 'yii\gii\Module',
     ];
     $config['modules']['gii']['allowedIPs'] = ['*'];

 }
person RAPOS    schedule 09.10.2017

Если вы сомневаетесь, проверьте журналы. Там есть предупреждение, которое должно сказать вам что-то вроде

10  06:00:19.040    warning yii\gii\Module::checkAccess Access to Gii is denied due to IP address restriction. The requested IP is 127.0.0.1
11  06:00:19.041    error   yii\web\HttpException:403   exception 'yii\web\ForbiddenHttpException' with message 'You are not allowed to access this page.' in ......./html/vendor/yiisoft/yii2-gii/Module.php:112

Вероятно, вы ошибаетесь насчет IP. Я только что попробовал конфигурацию, которая у вас есть, и она работает для меня.

PS1: вы не должны включать Gii на сервере, но я предполагаю, что вы уже это знаете, и это все еще среда разработки.

PS2: в Yii2 нет настройки пароля для gii

person Mihai P.    schedule 13.10.2014

Я нашел ответ, и это должно быть хорошо задокументировано командой yii!

После того, как я использовал команду init, в /frontend/config/main-local.php я обнаружил:

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

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = 'yii\gii\Module';
}

Мое приложение находится в режиме dev, и объявление выше останавливает работу моего gii, поэтому... прокомментируйте эту строку

person Ionut Flavius Pogacian    schedule 07.11.2014

Мне пришлось добавить это в мои конфигурации модуля

'gii' => array(
        'generatorPaths' => array('bootstrap.gii'),
        'class' => 'system.gii.GiiModule',
        'password' => 'aaa123',
        // If removed, Gii defaults to localhost only. Edit carefully to taste.
        'ipFilters' => array('*'),
    ),
person Xcoder    schedule 21.05.2018
comment
Ваш ответ для Yii1, вопрос о Yii2. - person rob006; 22.05.2018