我是 yii 框架的新手。在我的网站 gii 显示错误
错误 403 您无权访问此页面。
我像这样在配置文件中设置gii
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'test123',
'ipFilters'=>array('192.168.0.101','127.0.0.1','::1'),
),
仍然显示错误
这是唯一对我有用的行:
'ipFilters'=>array($_SERVER['REMOTE_ADDR']),
要解决此问题,请在主配置文件中查找 Gii 的模块部分,然后添加
包含您自己的 IP 的 ipFilters 数组:
// 受保护的/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 地址,并且 "::1"
表示本地主机(在某些配置中可能需要)。
小心不要将 Gii 开放给过于广泛的受众,以免它成为安全风险。
注意:Yii 1.1.6 将默认过滤器直接添加到股票配置文件中:
// 如果移除,Gii 默认只使用 localhost。仔细编辑以品尝。
'ipFilters'=>array('127.0.0.1','::1'),
希望解决你的问题..
你可以设置...
'ipFilters' => false
来自文档http://www.yiiframework.com/doc/api/1.1/GiiModule#ipFilters-detail ...
如果您想允许所有 IP 访问 gii,您可以将此属性设置为 false(请勿这样做,除非您知道后果!!!)
继sandy8086的好答案之后。如果您的远程主机是双堆栈(IPv6/IPv4),那么您可能会在您的子网前缀范围内自动分配一个动态 IPv6 地址。IPv4 使用通配符“*”的方法也可以用于 IPv6 地址,因此:“ab01:1234:5678:abcd:*”,如果您有 /64 前缀,这将匹配您 IPv6 网络上的任何地址. 这对我有用,当我遇到“错误 403”问题时,当我使用 Yii::app()->request->userHostAddress 发现我通过 IPv6 连接时,一分钱都掉了。
如果上面的链接没有任何帮助,请尝试查看运行时文件夹中的 appplication.log 文件,看看出了什么问题。
我遇到了同样的错误。我用Yii::app()->request->userHostAddress
;检查了我的 IP 事实证明,这正在返回一个类似于 this 的 IPv6 地址ab01::1
。这可能是行为,尤其是在您使用 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'),
),
考虑您的开发服务器所在的位置(相同的机器、LAN、WAN)以及您的 IP 地址如何更改为服务器。
如果您的服务器与您的客户端(浏览器)在同一台机器上运行,则您从 localhost 本身请求页面,因此您的 IP 地址是 127.0.0.1 并且默认设置有效。
如果您的服务器在另一台机器上,但在您的局域网 (LAN) 中,则您的 IP 地址通常类似于服务器的 192.168.1.20。你可以找到它并调整代码。
如果您的服务器是跨网络 (WAN),那么您要么有一个
只有在最后一个(不可预测的动态 IP 地址)的情况下,我才会遵循schmunk的这个答案,他也指出了风险。
$_SERVER['REMOTE_ADDR']
对我来说似乎没有必要使用。
确保配置文件底部没有预生成的配置。这些将覆盖您在上面添加的任何内容:
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;
}
尝试这个
'gii' => array(
'class' => 'system.gii.GiiModule',
'password' => 'pasword',
'ipFilters'=> false,
'generatorPaths' => array(
'bootstrap.gii'
),
),
我有一个非常相似的问题。对我来说,我的用户帐户没有对我的 PHP session_save_path 文件夹的写入权限。当我在 Windows 7 中浏览它时,它告诉我我需要权限,如果我选择 OK,它就会授予它。我做到了。一切都解决了。
if (YII_ENV_DEV) {
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [
'class' => 'yii\debug\Module',
];
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
];
}
使用此默认代码替换它后,
并使用此网址。