2013-11-15 21 views
6

Codeigniter geliştirme ortamı ayarlanmamış. Bu kodu her zaman index.php'de kullanırım. ama yerelhost üzerinde çalışırken neden çıktı olarak "üretim" aldığımı anlamıyorum.Codeigniter Ortam ayarı

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

Bu hiç bir anlam ifade etmiyor, bir yerde bir yazım hatası olmadığından emin misiniz? – Shomz

+0

Evet, yazım hatası olmadığından eminım. – Zohaib

+0

Hoiw bu CodeIgniter özgüdür? –

cevap

12

Bu garip. Benim için aynı şeyi yaptı. Böyle bir şey deneyebilir misin? Ben kontrol etmek için düzenli ifadeyi kullandık altında

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

echo ENVIRONMENT ; // output development 
+0

Teşekkürler çalışıyor. dirname (__ FILE__) yöntemi benim için her zaman işe yarıyor ama neden bu projede sorun yarattığını anlamıyorum. Tekrar teşekkürler – Zohaib

1

dinamik, sunucunun IP tabanlı ÇEVRE ayarlamak için yerel IP'leri gibi 127.0. * Ve 10.0. *.

$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/"); 
} 

kendinizinkilerle BASEURL değeri değiştirmeyi unutmayın ve application/config/config.php eklemedeki:

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

ile: Eğer index.php bakmak ve değiştirme proje kökünde

$config['base_url'] = BASEURL; 

Daha fazla geliştirmek için 01 ekleyin

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

diğer cevaplar üzerine ekleme: Sağ veritabanı ayarlarına $db['default'] = array( önce. Şimdi aşağıdaki cevap bir overkill gibi görünebilir (eğer ortam değişkenlerini tanımlamak gerekiyorsa o zaman neden HTTP_HOST kullanırsınız? Peki benim deneyimlerimde CI apache'yi yeniden başlattıktan sonra bile ortam değişkenlerinde yapılan değişiklikleri yansıtmaz. CLI'den bir istek gönderirken değerler güncelleştirildi.)

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