Php Yii2 Gii禁止代码403您不允许访问此页面
我有一台Php Yii2 Gii禁止代码403您不允许访问此页面,php,yii2,gii,Php,Yii2,Gii,我有一台服务器机器,我正在尝试允许我的PC ip地址使用gii 我的电脑ip地址是192.168.1.101 服务器机器ip是192.168.1.102 我使用composer安装gii模块 这就是我的composer.json设置的样子: "require": { "php": ">=5.4.0", "yiisoft/yii2": "*", "yiisoft/yii2-bootstrap": "*", "yiisoft/yi
服务器
机器,我正在尝试允许我的PC ip地址使用gii
我的电脑ip地址是192.168.1.101
服务器
机器ip是192.168.1.102
我使用composer
安装gii模块
这就是我的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
我还登录到了前端
这是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'
],
],
];
如有疑问,请检查日志。里面有一个警告应该告诉你
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的密码设置我遇到了类似的问题,并尝试了所有不同的ipFilter更改。最后,我需要将其添加到main-local.php。这很奇怪,因为我有一个高级应用程序,设置是“yii2 basic”设置。
我还应该指出,我确实将此添加到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
],
],
我找到了答案,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
工作,所以。。。注释行在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']
];
/$config['modules']['gii']='yii\gii\Module';/'yii\gii\Module',
'allowedIPs'=>XXX.XXX.XXX.XXX','YYY.YYY.YYY']
];
在dev
模式下初始化后,我必须更改\backend\config\main local.php
并添加“allowedIPs”
允许所有IP,因此仅建议内部开发人员使用!
适应你的需要
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
'allowedIPs' => ['*'],
];
更改/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' => ['*']
]
]
];
在yii_ENV_DEV inside if part:之前添加感叹号(!)之后,代码对我(yii 2.0.8)有效:
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'] = ['*'];
}
我必须将其添加到我的模块配置中
'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('*'),
),
对的在Yii2.0中,允许IP的设置必须包含在web.php中,而不是console.php中。假设您使用的是Yii2基本模板,与Yii2高级模板略有不同。高级模板中没有web.php。请参阅下面的答案,在main-local.php中添加“allowedIPs”应该足够了。当我将应用程序上载到生产服务器时,我遇到了类似的问题,如果您没有在
$config['modules'['debug']中指定allowedIPs
,看起来像是这样的[
它默认为localhost,所以我无法访问生产上的调试,通过添加allowedIPs
解决了这个问题。您的答案是关于Yii1的,问题是关于Yii2的。
'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('*'),
),