2012-08-03 120 views
8

我是yii框架中的新手。在我的網站gii顯示錯誤gii不在yii工作

錯誤403 您無權訪問此頁面。

我設定的GII在這樣

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

配置文件它仍然顯示錯誤

+3

您可以檢查'的Yii ::應用程序的輸出() - >請求 - > userHostAddress'? – 2012-08-03 15:51:20

+0

當您嘗試訪問'gii'時,您是否已經登錄?你有沒有對'UserIdentity.php'做任何修改? – 2012-08-04 00:57:33

+0

嘗試刪除你的yii應用程序cookie! http://www.yiiframework.com/forum/index.php/topic/9646-cant-get-past-gii-login-page/ – Nimir 2012-08-04 04:06:09

回答

3

要解決這個問題,看在爲GII模塊部分的主配置文件,並添加

ipFilters陣列,其中包括您自己的IP:

//保護/配置/ 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默認只本地主機。仔細編輯品嚐。

'ipFilters'=>array('127.0.0.1','::1'), 

希望解決你的問題..

+0

我已閱讀文章。根據這個我添加了我的IP但它顯示錯誤 – 2012-08-03 10:34:22

0

我得到了同樣的錯誤。我用Yii::app()->request->userHostAddress檢查了我的IP;事實證明,這是返回一個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'), 
    ), 
10

這是唯一爲我工作行:

'ipFilters'=>array($_SERVER['REMOTE_ADDR']), 
+3

你是否意識到這是一個安全風險? IP過濾器是有原因的。如果該文件將其轉換爲生產系統會怎樣? – DCoder 2012-12-30 16:58:05

+0

這一個是正確的! – joydesigner 2013-10-15 04:26:36

+0

然而,這是一個安全風險,如果您知道自己在做什麼並且擁有強大的訪問密碼,這可能非常有用。感謝您的解決方案。 – 2014-05-15 14:05:40

1

繼sandy8086的好回答。如果您的遠程主機是雙堆棧(IPv6/IPv4),那麼您可能會在您的子網前綴範圍內自動分配動態IPv6地址。使用通配符'*'的IPv4方法也可以與IPv6地址一起使用,因此:'ab01:1234:5678:abcd:*',如果您有一個/ 64前綴,這將匹配您的IPv6網絡上的任何地址。這對我有用,當我遇到'錯誤403'時遇到問題,並且當我發現使用Yii :: app() - > request-> userHostAddress時丟棄了我通過IPv6連接的便士。

0

我有一個非常類似的問題。對我來說,這是我的用戶帳戶沒有寫入我的PHP session_save_path文件夾。當我在Windows 7中瀏覽它時,它告訴我我需要許可,如果我選擇了「確定」,它會授予它。我做到了。一切都是固定的。

0

試試這個

'gii' => array(
     'class' => 'system.gii.GiiModule', 
     'password' => 'pasword', 
     'ipFilters'=> false, 
     'generatorPaths' => array(
      'bootstrap.gii' 
     ), 
    ), 
0

考慮您的開發服務器位於(相同MACHING,LAN,WAN),以及如何對服務器的IP地址發生變化。

  1. 如果您的服務器在同一臺機器上運行一樣的客戶端(瀏覽器),你從本地主機本身請求的頁面,這樣您的IP地址爲127.0.0.1,默認的設置工作。

  2. 如果您的服務器位於不同的計算機上,但位於局域網(LAN)中,則您的IP地址通常與服務器的此類192.168.1.20相似。你可以找到它並調整代碼。

  3. 如果你的服務器是整個網絡(WAN),那麼你要麼有一個

    • 靜態IP地址(如果你是幸運的)在一定範圍內
    • 或動態IP地址,
    • 或更糟,一個或多或少不可預知的動態IP地址。

只有在最後(不可預知的動態IP地址)的情況下,我會按照this answer通過schmunk誰也指出風險。

使用$_SERVER['REMOTE_ADDR']對我來說似乎沒有必要。

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; 
} 
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