2013-11-15 7 views
6

कोडनिर्देशक विकास पर्यावरण सेटिंग नहीं है। मैं हमेशा index.php में इस कोड का उपयोग करता हूं। लेकिन मुझे समझ में नहीं आता है कि मैं आउटपुट के रूप में "उत्पादन" क्यों प्राप्त कर रहा हूं जबकि मैं स्थानीयहोस्ट पर काम कर रहा हूं।कोडिनेटर पर्यावरण सेटिंग

switch(dirname(__FILE__)){ 
case "H:\wamp\www\sitedirectory": 
    define('ENVIRONMENT', 'development'); 
break; 
default: 
    define('ENVIRONMENT', 'production'); 
break; 
} 

    echo ENVIRONMENT ; // output is "production" while i am on localhost 
    echo dirname(__FILE__) ; // output is "H:\wamp\www\sitedirectory" 
+0

इसका कोई मतलब नहीं है, क्या आपको यकीन है कि आपके पास कहीं टाइपो नहीं है? – Shomz

+0

हाँ मुझे यकीन है कि कोई टाइपो नहीं है। – Zohaib

+0

होइव यह कोडइग्निटर-विशिष्ट है? –

उत्तर

12

यह अजीब बात है। यह मेरे लिए एक ही चीज़ है। क्या आप इस तरह कुछ कोशिश कर सकते हैं?

switch($_SERVER["HTTP_HOST"]){ 
case "localhost": 
    define('ENVIRONMENT', 'development'); 
break; 
default: 
    define('ENVIRONMENT', 'production'); 
break; 
} 

echo ENVIRONMENT ; // output development 
+0

धन्यवाद यह काम करता है। dirname (__ FILE__) विधि हमेशा मेरे लिए काम करती है लेकिन मुझे नहीं पता कि यह इस परियोजना में समस्या क्यों पैदा कर रहा है। एक बार फिर धन्यवाद – Zohaib

1

गतिशील, सर्वर का IP के आधार पर पर्यावरण सेट करने के लिए नीचे दिए गए मैं जांच करने के लिए नियमित अभिव्यक्ति का इस्तेमाल किया है स्थानीय IP के जैसे 127.0। * और 10.0। *।

साथ
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development'); 

:

$server_ip = getHostByName(getHostName()); 

if (preg_match("/^(127\.0\.|10\.0\.).+/i", $server_ip)) { 
    define("ENVIRONMENT", "development"); 
    define("BASEURL", "http://localhost:8000/"); 
} else { 
    define("ENVIRONMENT", "production"); 
    define("BASEURL", "https://domain.com/"); 
} 

अपने स्वयं के साथ BASEURL से मूल्य को बदलने के लिए सुनिश्चित करें और application/config/config.php ऐड में:

जड़ की आप index.php को देखने के लिए और की जगह परियोजना पर

$config['base_url'] = BASEURL; 

आगे बढ़ने के लिए 01 में जोड़ें

if(ENVIRONMENT !== 'production') { 
    $db = [ 
      'username' => '', 
      'password' => '', 
      'database' => '', 
      'hostname' => '127.0.0.1' 
    ]; 
} else { 
    $db = [ 
      'username' => '', 
      'password' => '', 
      'database' => '', 
      'hostname' => '' 
    ]; 
} 
1

अन्य उत्तर के लिए पर जोड़ना: सही डेटाबेस सेटिंग्स $db['default'] = array( से पहले। अब नीचे दिया गया उत्तर एक ओवरकिल जैसा दिख सकता है (यदि आपको पर्यावरण चर को परिभाषित करना है तो HTTP_HOST का उपयोग क्यों करें? मेरे अनुभव में सीआई अपाचे को पुनरारंभ करने के बाद भी पर्यावरण चर में किए गए किसी भी बदलाव को प्रतिबिंबित करने में विफल रहता है। यह किसी भी तरह से मिलता है सीएलआई से अनुरोध भेजते समय अद्यतन मूल्य।)

if (php_sapi_name() === 'cli') 
{ 
    // incase the request is made using the cli, the $_SERVER['HTTP_HOST'] will not be set 

    define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development'); 
} 
else 
{ 
    switch ($_SERVER["HTTP_HOST"]) 
    { 
     case "localhost": 
      define('ENVIRONMENT', 'development'); 
      break; 
     default: 
      define('ENVIRONMENT', 'production'); 
      break; 
    } 
}