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'
],
],
];
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
],
],
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' => ['*'],
];
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']
];
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' => ['*']
]
]
];
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'] = ['*'];
}
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
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