gii不在yii工作

时间:2012-08-03 09:37:41

标签: php yii gii

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

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

我在配置文件中设置了这样的

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

仍显示错误

11 个答案:

答案 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地址如何向服务器发生变化。

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

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

  3. 如果您的服务器是通过网络(WAN),那么您将拥有

    • 静态IP地址(如果幸运的话)
    • 或固定范围内的动态IP地址
    • 或更糟,或多或少不可预测的动态IP地址。
  4. 只有在最后一个(不可预测的动态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',
    ];
}

使用此默认代码替换后

并使用此网址。

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