web-dev-qa-db-fra.com

Yii2 Gii Code interdit 403 Vous n'êtes pas autorisé à accéder à cette page

J'ai une machine server et j'essaie de permettre à l'adresse IP de mon PC d'utiliser gii.

Mon adresse IP est 192.168.1.101

L'IP de la machine server est 192.168.1.102.

J'ai utilisé composer pour installer le gii module.

Voici comment se présentent mes paramètres 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": "*"
    },

J'ai utilisé php init et composer update et php yii migrate.

Je suis également connecté à la frontend.

Ceci est le contenu du fichier 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'
        ],
    ],
];
13

J'ai eu un problème similaire et j'ai essayé toutes les modifications apportées à ipFilter. En fin de compte, je devais ajouter ceci à main-local.php. Ce qui était étrange parce que j'avais une application avancée et que les paramètres étaient définis pour une configuration 'yii2 basic'.
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';}

Je devrais également signaler, j'ai ajouté ceci à 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
    ],
],
26
johnsnails

Après init en mode dev, je devais changer mon \backend\config\main-local.php et ajouter les «IP autorisés».

AutoriseALLIPs, donc recommandé uniquement pour les développeurs internes! Adaptez-vous à vos besoins.

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

Dans la version actuelle de Yii, vous devriez le faire dans web.php pour autoriser l'accès à 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']
];
7
Doychin Dokov

Changez votre /common/config/main-local.php comme suit:

    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' => ['*']
        ]
    ]
];
4
user2161402

Le code a fonctionné pour moi (yii 2.0.8) après l’ajout d’un point d’exclamation (!) Avant YII_ENV_DEV inside 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'] = ['*'];

 }
3
RAPOS

En cas de doute, vérifiez les journaux. Il y a un avertissement qui devrait vous dire quelque chose comme

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

Vous avez probablement tort sur l'IP. Je viens d'essayer la configuration que vous avez et cela fonctionne pour moi.

PS1: Gii ne devrait pas être activé sur un serveur, mais je suppose que vous le savez déjà et qu’il reste l’environnement de développement.

PS2: il n'y a pas de paramètre mot de passe pour gii dans Yii2

2
Mihai P.

J'ai trouvé la réponse, et cela devrait être bien documenté par l'équipe yii!

Après avoir utilisé la commande init, dans /frontend/config/main-local.php, j'ai découvert:

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';
}

Mon application est en mode dev et la déclaration ci-dessus arrête ma gii au travail, alors ... commentez cette ligne