Otomatik olarak geliştirme makine ve gerçek makine tespit CodeIgniter'ı nasıl yapılandırılır?

4 Cevap php

Ben Windows laptop gelişen ama benim paylaşılan Linux barındırma benim gelişimini test etmek gerekir ediyorum. Ben normal $application_path = "application"; hattının yerine birlikte aşağıdaki atılmış.

$env['laptop']['ip'] = '127.0.0.1';
$env['laptop']['host'] = 'MATT-WINDOWS7';
$env['laptop']['path'] = 'private';

$env['mattpotts']['ip'] = '12.34.56.78'; $env['mattpotts']['host'] = 'my.webhost.com'; $env['mattpotts']['path'] = '../private/blah';

 $ip = $_SERVER['SERVER_ADDR'];
 $host = php_uname('n');
 foreach($env as $e)
  if($e['ip'] == $ip && $e['host'] == $host)
   $application_folder = $e['path'];
 unset($env);
 if(!isset($application_folder))
  die('application folder not set');

... Başvuru yolunu ayarlama çalışıyor ama şimdi ben her ortam için bir veritabanı yapılandırma için ihtiyacı ile sorun haline çalıştırıyorum hangi.

Ben bir kaç basit IFS ile iş yapabilir ama bu bir en iyi uygulama çözümü var merak ediyordum.

Şerefe

4 Cevap

Böyle Subversion olarak revizyon kontrolü kullanın. Test ortamında ve değiştirilmiş bir sürümü dağıtılan bir yapılandırma dosyası geliştirme ortamı kontrol ettirin. Sadece sizin test / üretim ortamına yapmazlar böylece bu yapılandırma değişikliklerini işlemek değil müşteri söyleyin.

Bu kesinlikle en iyi uygulama çözümdür :)

P.S. Subversion sunucusu kurma gibi hissediyorum yoksa, her zaman Beanstalk gibi çözümler var barındırılan ve Windows üzerinde iseniz, TortoiseSVN kaygan istemcisi.

Hainlere kurma gibi hissediyorum yoksa her zaman SERVER_NAME bakarak konum ne sitesi algılayabilir. Geçmişte bir CI sitede ben üretim sunucuları vs dev anlamaya benim config.php içinde kullanılan şu:

if ($_SERVER['SERVER_NAME'] == 'www.mysite.com') {
    $config['log_path'] = '/var/log/site/';
} else {
    $config['log_path'] = '/var/log/dev_site/';
}

Eğer çevreye göre farklı değişkenleri olması gerekir bu her yerde kullanabilirsiniz. Bu sizin koduna böyle şeyler zor kodlama her zaman iyi bir fikir değildir söyleniyor.

Burada tek bir kod tabanı üzerinde birden üretim ortamlarında çalışan bir güzel temiz çözüm:

http://philsturgeon.co.uk/news/2009/01/How-to-Support-multiple-production-environments-in-CodeIgniter

Phil çözümü artık erişilebilir olduğu gibi, burada aynı çözümü ile veririz başka bir çözüm var.

İşte Git repo için link: https://github.com/jedkirby/ci-multi-environments ve bu modülün kısa bir açıklama: http://jedkirby.com/blog/2012/11/codeigniter-multiple-development-environments