2012-08-03 16 views
8

में काम नहीं कर रहा है मैं yii ढांचे में नया हूं। मेरी साइट में जीआईआई त्रुटिgii yii

त्रुटि 403 आपको इस पृष्ठ तक पहुंचने की अनुमति नहीं है।

मैं इस

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

तरह कॉन्फ़िग फ़ाइल में जीआईआई सेट अभी भी यह त्रुटि

+3

आप 'Yii :: एप्लिकेशन के उत्पादन में जाँच कर सकते हैं() -> अनुरोध> userHostAddress'? –

+0

क्या आप पहले से ही लॉग इन हैं जब आप 'gii' तक पहुंचने का प्रयास कर रहे हैं? क्या आपने 'UserIdentity.php' पर कोई बदलाव किया है? –

+0

अपनी वाईआई ऐप कुकीज़ को हटाने का प्रयास करें !! http://www.yiiframework.com/forum/index.php/topic/9646-cant-get-past-gii-login-page/ – Nimir

उत्तर

3

इसे ठीक करने के जीआईआई के लिए मॉड्यूल अनुभाग के लिए अपने मुख्य कॉन्फ़िग फ़ाइल में देखने के लिए दिखाने के लिए, और एक जोड़ने

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"

स्थानीय होस्ट (जो कुछ विन्यास में आवश्यक हो सकता है) का प्रतिनिधित्व करता है, तो साथ ही समर्थित हैं।

सावधानी बरतें कि जीआई को बहुत व्यापक दर्शकों के सामने न खोलें ताकि यह सुरक्षा जोखिम न हो।

नोट: Yii 1.1.6 शेयर कॉन्फ़िग फ़ाइल को सीधे डिफ़ॉल्ट फ़िल्टर जोड़ता है:

// तो हटा दिया, जीआईआई चूक केवल स्थानीय होस्ट करने के लिए। ध्यान से स्वाद के लिए संपादित करें।

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

आशा आपकी समस्या ..

+0

मैंने पहले से ही लेख पढ़ा है। इसके अनुसार मैंने अपना आईपी जोड़ा लेकिन यह त्रुटि –

0

Why do I get a 403 error when trying to use Gii?

ऊपर के लिंक किसी भी मदद नहीं करता है, तो क्रम फ़ोल्डर में appplication.log फ़ाइल तलाश करने के लिए देखने के लिए क्या गलत हो रहा है की कोशिश को हल किया।

0

मुझे एक ही त्रुटि मिल रही थी। मैंने Yii::app()->request->userHostAddress के साथ अपना आईपी चेक किया; यह पता चला है कि यह एक आईपीवी 6 पता लौटा रहा है जो कुछ ab01::1 पसंद करता है। यह व्यवहार हो सकता है विशेष रूप से यदि आप सफारी का उपयोग कर रहे हैं (ओएस एक्स पर ... ओएस एक्स पर क्रोम सामान्य 127.0.0.1 आईपी दिखा रहा है। इन दो वेबकिट ब्राउज़र से अजीब अजीब व्यवहार)।

तो, बस अपने विचारों में से एक में 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

दिखाती है क्या आपको एहसास है कि यह एक सुरक्षा जोखिम है? आईपी ​​फिल्टर एक कारण के लिए हैं। क्या होगा यदि वह फ़ाइल इसे उत्पादन प्रणाली में लाती है? – DCoder

+0

यह एक सही है! – joydesigner

+0

यह एक सुरक्षा जोखिम है, हालांकि, यदि आप जानते हैं कि आप क्या कर रहे हैं और एक मजबूत पहुंच पासवर्ड है तो यह बहुत उपयोगी हो सकता है। समाधान के लिए धन्यवाद। –

1

sandy8086 के अच्छे उत्तर से निम्नलिखित के बाद। यदि आपका रिमोट होस्ट दोहरी स्टैक्ड (आईपीवी 6/आईपीवी 4) है तो आपके पास स्वचालित रूप से आपके सबनेट उपसर्ग श्रेणी में आवंटित एक गतिशील आईपीवी 6 पता हो सकता है।वाइल्डकार्ड '*' का उपयोग करने की आईपीवी 4 विधि को आईपीवी 6 पते के साथ भी अपनाया जा सकता है, इस प्रकार: 'ab01: 1234: 5678: abcd: *', अगर आपके पास/64 उपसर्ग था, तो यह आपके आईपीवी 6 नेटवर्क पर किसी भी पते से मेल खाता होगा । यह मेरे लिए काम करता था और जब मुझे 'त्रुटि 403' में परेशानी होती थी और वाईआई :: ऐप() -> अनुरोध-> userHostAddress का उपयोग करके मुझे पता चला कि पैसा आईपीवी 6 के माध्यम से कनेक्ट हो रहा था।

4

आप निर्धारित कर सकते हैं ...

'ipFilters' => false 

डॉक्स http://www.yiiframework.com/doc/api/1.1/GiiModule#ipFilters-detail से ...

आप सभी IP जीआईआई का उपयोग करने की अनुमति देना चाहते हैं, तो आप इस संपत्ति गलत सेट कर सकते हैं (ऐसा करते हैं जब तक कि आप परिणाम जानते हैं !!!)

0

मैं एक बहुत ही इसी तरह की समस्या थी। मेरे लिए यह था कि मेरे उपयोगकर्ता खाते में मेरे PHP session_save_path फ़ोल्डर में लिखने की सुविधा नहीं थी। जब मैंने विंडोज 7 में इसे ब्राउज किया, तो उसने मुझे बताया कि मुझे अनुमति की आवश्यकता है और अगर मैं ठीक से चुना तो यह इसे प्रदान करेगा। मैंने किया। सब कुछ तय किया गया था।

0

कोशिश इस

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

पर विचार करें जहां अपने विकास सर्वर (एक ही मशीन, लैन, वैन) और कैसे सर्वर की ओर आपके आईपी पते में परिवर्तन स्थित है।

  1. अपने सर्वर एक ही मशीन पर चल रहा है तो अपने ग्राहक (ब्राउज़र) करता है, तो आप स्थानीय होस्ट से ही पृष्ठ का अनुरोध है, इस प्रकार आपके आईपी पते 127.0.0.1 और डिफ़ॉल्ट सेटिंग्स का काम है।

  2. यदि आपका सर्वर एक अलग मशीन पर है लेकिन आपके स्थानीय क्षेत्र नेटवर्क (लैन) में, आपका आईपी पता आमतौर पर सर्वर के लिए इस 192.168.1.20 जैसा दिखता है। आप इसे पा सकते हैं और कोड समायोजित कर सकते हैं।

  3. अपने सर्वर वेब (वैन) भर में है, तो आप या तो एक

    • स्थिर IP पता (यदि आप भाग्यशाली हैं) एक निश्चित सीमा के भीतर
    • या एक गतिशील आईपी पते के लिए होता है,
    • या इससे भी बदतर, एक कम या कम अप्रत्याशित गतिशील आईपी पता।

केवल बहुत पिछले (अप्रत्याशित गतिशील आईपी पते) यदि यह मामला है, मैं schmunk जो भी जोखिम बताते द्वारा this answer का अनुसरण करेगी।

$_SERVER['REMOTE_ADDR'] का उपयोग करना मेरे लिए अनावश्यक लगता है।

0

सुनिश्चित करें कि कॉन्फ़िगरेशन फ़ाइल के नीचे कोई पूर्वनिर्मित कॉन्फ़िगरेशन नहीं है।उन के ऊपर लिख देगा जो कुछ भी आप ऊपर कहा:,

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', 
    ]; 
} 

के बाद यह डिफ़ॉल्ट कोड का उपयोग करके इसे बदलना

और उपयोगकर्ता इस:

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

बन चाहिए (उदाहरण के लिए, किसी को भी अनुमति देता है) यूआरएल।

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