我是yii框架的新手。在我的网站中,gii显示错误
错误403 您无权访问此页面。
我在配置文件中设置了这样的
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'test123',
'ipFilters'=>array('192.168.0.101','127.0.0.1','::1'),
),
仍显示错误
答案 0 :(得分:10)
这是唯一适用于我的行:
'ipFilters'=>array($_SERVER['REMOTE_ADDR']),
答案 1 :(得分:4)
你可以设置......
'ipFilters' => false
来自文档http://www.yiiframework.com/doc/api/1.1/GiiModule#ipFilters-detail ...
如果要允许所有IP访问gii,您可以设置此项 属性是假的(除非你知道,否则不要这样做 CONSEQUENCE !!!)
答案 2 :(得分:3)
要解决此问题,请在主配置文件中查找Gii的模块部分,然后添加
包含您自己的IP的ipFilters数组:
// protected / config / main.php
返回数组(
...
'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地址,也支持IPv6地址,并且“:: 1”
表示localhost(在某些配置中可能需要)。
小心不要向太多的观众开放Gii,以免它成为安全风险。
注意:Yii 1.1.6将默认过滤器直接添加到库存配置文件中:
//如果删除,Gii默认仅限localhost。仔细编辑以品尝。
'ipFilters'=>array('127.0.0.1','::1'),
希望解决你的问题..
答案 3 :(得分:1)
继承了sandy8086的好答案。如果远程主机是双堆叠(IPv6 / IPv4),则可能在子网前缀范围内自动分配动态IPv6地址。使用通配符'*'的IPv4方法也可以与IPv6地址一起使用,因此:'ab01:1234:5678:abcd:*',如果你有一个/ 64前缀,这将匹配你的IPv6网络上的任何地址。这对我有用,当我遇到'错误403'时出现问题,当我发现使用Yii :: app() - > request-> userHostAddress,我通过IPv6连接时丢失了便士。
答案 4 :(得分:0)
Why do I get a 403 error when trying to use Gii?
如果以上链接没有帮助,请尝试在运行时文件夹中查找appplication.log文件以查看出现了什么问题。
答案 5 :(得分:0)
我得到了同样的错误。我用Yii::app()->request->userHostAddress
检查了我的IP;事实证明,这将返回一个看起来像这个ab01::1
的IPv6地址。这可能是行为,特别是如果您使用的是Safari(在OS X上...... OS X上的Chrome显示正常的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'),
),
答案 6 :(得分:0)
我有一个非常类似的问题。对我而言,我的用户帐户没有写入我的PHP session_save_path文件夹。当我在Windows 7中浏览它时,它告诉我我需要许可,如果我选择OK,它会授予它。我做到了。一切都得到了解决。
答案 7 :(得分:0)
试试这个
'gii' => array(
'class' => 'system.gii.GiiModule',
'password' => 'pasword',
'ipFilters'=> false,
'generatorPaths' => array(
'bootstrap.gii'
),
),
答案 8 :(得分:0)
考虑您的开发服务器所在的位置(相同的机器,LAN,WAN)以及您的IP地址如何向服务器发生变化。
如果您的服务器与客户端(浏览器)在同一台计算机上运行,则从localhost本身请求该页面,因此您的IP地址为127.0.0.1且默认设置有效。
如果您的服务器位于不同的计算机上但位于局域网(LAN)中,则您的IP地址通常类似于服务器的192.168.1.20。您可以找到它并调整代码。
如果您的服务器是通过网络(WAN),那么您将拥有
只有在最后一个(不可预测的动态IP地址)出现的情况下,我才会跟this answer schmunk一起指出风险。{/ p>
使用$_SERVER['REMOTE_ADDR']
对我来说似乎没用。
答案 9 :(得分:0)
确保配置文件底部没有预先生成的配置。这些将覆盖您在上面添加的内容:
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;
}
答案 10 :(得分:0)
if (YII_ENV_DEV) {
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [
'class' => 'yii\debug\Module',
];
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
];
}
使用此默认代码替换后
并使用此网址。