Şartlı yapılandırma: çevrimiçi yerel veya kulüpler eğer algılamak nasıl?

5 Cevap

Ben yerel ve çevrimdışı için farklı yapılandırmalar sağlamak istiyoruz. Şu anda, ben web sunucusuna benim şeyler yüklemek her zaman, ben farklı config dosyaları ile pisliği yok emin olmalısınız. Yerel kalkınma için bir, ve çevrimiçi bir.

Ben biraz önce birkaç yıl, çevrimiçi arasında otomatik bir şekilde ayırt bir kod parçacığını ve yerel kalkınmayı hatırlıyorum.

Algılamak için güvenli bir yolu var mı?

5 Cevap

Ben genellikle bu için, sunucu adını kullanın; Örneğin, burada benim blog kullanmak ne:

if ($_SERVER['SERVER_NAME'] === 'blog') {
    // Development
} else {
    // Production
}

Bunun nedeni,:

  • Benim geliştirme makinede, blog ServerName direktifi ile bir VirtualHost kullanılarak, http://blog (nothing else after) ile erişilir.
  • Üretim sunucusunda, tabii ki, ServerName direktifi gerçek blog sunucu adını içeren, biraz daha uzun bu daha.

I akım server name, name server kayıtları vardır normalde yerel sunucu var yoksa denetler, bu işlevi kurmak var.

<?php
function isLocal ()
{
  return !checkdnsrr($_SERVER['SERVER_NAME'], 'NS');
}
?>

Başka bir yaklaşım. Geliştirme kökünde bir htacces dosyasını ayarlayın:

SetEnv APPLICATION_ENV development

Sonra okumak:

defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV')
                                    ? getenv('APPLICATION_ENV')
                                    : 'production'));

Benim cevabım temelde Pascal Bu sayfada aynıdır, ancak geliştirme sunucu adını değiştirmek ve olabilir beri ben bu tercih yapıyor, kodunuzda bu kontroller birkaç gerekebilir:

define ('DEV_HOST', 'blog'); // if you just use http://blog locally

Ve sonra kontrol

if ($_SERVER['SERVER_NAME'] == DEV_HOST) {
  // do your tricks
}

Burada sıfır yapılandırma gerektirir ve oldukça hızlı çalışması gereken bir çözümdür:

function isOnline()
{
    return checkdnsrr('google.com', 'ANY');
}