aynı sunucuda aynı projenin farklı sürümleri için yapılandırma dosyalarını yüklemek için en iyi yolu nedir?

3 Cevap php

Ben yapılandırma dosyalarının iki düzeyde dayanan büyük bir php proje var.

Benim proje klasöründe ben yüklenen ve daha sonra bir site belirli yapılandırma dosyası ile birleştirilmiş bir default.config.ini var.

Şu anda kod özgü yapılandırma dosyasına işaret eden bir ortam değişkeni PROJECT_CONFIG okuyor. Bu, her geliştirici kendi makine üzerinde çalışmak için çalışıyor. Canlı Dev, Sahne,: biz sunucuya projeyi taşımak ve aynı projenin üç örneği var istediğiniz zaman sorun ortaya çıkar.

Her alt etki farklı olması gerekiyor çünkü şimdi artık (dev.domain.com, stage.domain.com ve www.domain.com gibi proje kurulum) küresel env var kullanabilirsiniz.

Bir kullanıcı dev.domain.com bir sayfa istendiğinde (örneğin, kod bir env var cekti bakmak için bir env var adı olarak sunucu değişkeni HTTP_HOST dönüştürme ve sağ set config için kullanarak kabul var dev_domain_com) olarak adlandırılan, ama diğer insanların ne yaptığını görmek istedim ve ne tavsiye.

Herhangi bir tavsiye büyük, peşin teşekkürler duyacağız

3 Cevap

Uygulama örneğine erişim yapılandırma kap içinde PROJECT_CONFIG ayarlamak için apache SetEnv direktifini kullanın:

SetEnv PROJECT_CONFIG /src/dev/app.config.php

David Schmitt'in fikri çok zarif. I $_SERVER['HTTP_HOST'] sende hangi sunucu belirlemek ve buna göre yolunu ayarlamak için kullanmak için bir davayı görebiliyordu. Eğer sunucunun sanal konak yapılandırma dosyaları değiştirmek için ayrıcalıkları yoksa böyle bir durum olabilir. Örneğin:

<?php
  switch($_SERVER['HTTP_HOST']){
    case 'dev.domain.com':
      $path = '/home/dev_user/project.config.ini';
      break;
    case 'stage.domain.com':
      $path = '/home/stage_user/project.config.ini';
      break;
    case 'www.domain.com':
      $path = '/home/live_user/project.config.ini';
      break;
    default:
      $path = '';
  }
  if(!defined('PROJECT_CONFIG')){
    define('PROJECT_CONFIG', $path);
  }
  unset($path);
?>

Not: sunucu yapılandırmasına bağlı olarak $_SERVER['SERVER_NAME'] ile $_SERVER['HTTP_HOST'] değiştirmek isteyebilirsiniz.

Ben mevcut çözüm sadece iyi olduğunu düşünüyorum. Çevre ayarları sonuçta bir nedeni vardır. Ben çalışmak için kullanılan bir büyük ölçekli özel cms için kullanılan şeyler yapmanın yolunu gördüm.

Ben farklı yapılandırmaları yüklemek ve ortam ayarları kullanın ve env ayarı yapılmamışsa eğer bir çare olarak hostname algılamasını planlıyoruz dev / sahne / üretim yerleri olan ile aynı şeyi yapmak gerekir.