9

我是 yii 框架的新手。在我的网站 gii 显示错误

错误 403 您无权访问此页面。

我像这样在配置文件中设置gii

'gii'=>array(
    'class'=>'system.gii.GiiModule',
    'password'=>'test123',
    'ipFilters'=>array('192.168.0.101','127.0.0.1','::1'),
),

仍然显示错误

4

11 回答 11

10

这是唯一对我有用的行:

'ipFilters'=>array($_SERVER['REMOTE_ADDR']),
于 2012-12-30T16:26:02.800 回答
4

要解决此问题,请在主配置文件中查找 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'),

希望解决你的问题..

于 2012-08-03T09:43:47.753 回答
4

你可以设置...

'ipFilters' => false

来自文档http://www.yiiframework.com/doc/api/1.1/GiiModule#ipFilters-detail ...

如果您想允许所有 IP 访问 gii,您可以将此属性设置为 false(请勿这样做,除非您知道后果!!!)

于 2013-02-05T22:37:18.857 回答
1

继sandy8086的好答案之后。如果您的远程主机是双堆栈(IPv6/IPv4),那么您可能会在您的子网前缀范围内自动分配一个动态 IPv6 地址。IPv4 使用通配符“*”的方法也可以用于 IPv6 地址,因此:“ab01:1234:5678:abcd:*”,如果您有 /64 前缀,这将匹配您 IPv6 网络上的任何地址. 这对我有用,当我遇到“错误 403”问题时,当我使用 Yii::app()->request->userHostAddress 发现我通过 IPv6 连接时,一分钱都掉了。

于 2013-02-05T22:03:27.967 回答
0

为什么我在尝试使用 Gii 时会收到 403 错误?

如果上面的链接没有任何帮助,请尝试查看运行时文件夹中的 appplication.log 文件,看看出了什么问题。

于 2012-08-08T05:24:07.010 回答
0

我遇到了同样的错误。我用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'),
    ),
于 2012-12-26T07:01:51.270 回答
0

考虑您的开发服务器所在的位置(相同的机器、LAN、WAN)以及您的 IP 地址如何更改为服务器。

  1. 如果您的服务器与您的客户端(浏览器)在同一台机器上运行,则您从 localhost 本身请求页面,因此您的 IP 地址是 127.0.0.1 并且默认设置有效。

  2. 如果您的服务器在另一台机器上,但在您的局域网 (LAN) 中,则您的 IP 地址通常类似于服务器的 192.168.1.20。你可以找到它并调整代码。

  3. 如果您的服务器是跨网络 (WAN),那么您要么有一个

    • 静态 IP 地址(如果幸运的话)
    • 或固定范围内的动态 IP 地址,
    • 或者更糟的是,一个或多或少不可预测的动态 IP 地址。

只有在最后一个(不可预测的动态 IP 地址)的情况下,我才会遵循schmunk的这个答案,他也指出了风险。

$_SERVER['REMOTE_ADDR']对我来说似乎没有必要使用。

于 2014-03-03T18:41:31.837 回答
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;
}
于 2014-07-27T13:21:37.707 回答
0

尝试这个

    'gii' => array(
        'class' => 'system.gii.GiiModule',
        'password' => 'pasword',
        'ipFilters'=> false,
        'generatorPaths' => array(
            'bootstrap.gii'
        ),
    ),
于 2013-07-22T10:13:38.223 回答
0

我有一个非常相似的问题。对我来说,我的用户帐户没有对我的 PHP session_save_path 文件夹的写入权限。当我在 Windows 7 中浏览它时,它告诉我我需要权限,如果我选择 OK,它就会授予它。我做到了。一切都解决了。

于 2013-05-12T01:19:26.070 回答
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',
    ];
}

使用此默认代码替换它后,

并使用此网址。

http://localhost/basic/web/index.php?r=gii

于 2017-01-14T07:12:15.497 回答