Eğer geliştirme / hazırlama / üretim örneklerini nasıl yapılandırılacağı hakkında bu garip fikri hakkında ne düşünüyorsunuz?

5 Cevap php

Ben sadece çevre-bağımlı parametreleri nasıl yapılandırılacağı hakkında garip bir fikrim var. Sıralama parametreleri gibi Rails'in config / database.yml bulabilirsiniz

Benim geçerli projede (aynı tekniği PHP + Apache için geçerlidir gerçi) PHP ve Litespeed Web Server kullanan, ve ben 'neden bu için mod_rewrite kullanmak değil mi? "... Düşündüm. Ben (şu anda geliştirme / üretim) Her env için ayrı bir sanal ana yapılandırmaları var

Ben şimdi ne var olduğunu:


RewriteRule (.*) $1 [env=development:1]

geliştirme ortamı Sankon için. Ama eğer böyle bir şey olacak?


RewriteRule (.*) $1 [env=development:1,env=mysql_host:localhost,env=mysql_port:3306,env=mysql_user:root,env=mysql_pass:,env=mysql_db:mydbname]

Mantıklı olur ya da bazı sorunlara neden olur? Sen ne düşünüyorsun?

5 Cevap

Ben yazma kuralları gibi yapılandırma bilgilerini koymak için özellikle sezgisel bir yer vardır inanmıyorum. Belki bir şey, yanlış anlama ama gelişme, evreleme ve üretim ortamlarında veritabanı bağlantısı arasındaki tek fark ediyorum? Genellikle kodu (en az bir kez değişiklik yapılır) da farklı olduğunu ve bir revizyon kontrol sistemi kullanıyorsanız eğer öyleyse, ben size kopya bir şablon yapılandırma dosyası (database.cfg.template) için daha iyi bir fikir olabileceğini düşünüyorum ve (database.cfg için) değiştirmek (ve yok saymak için revizyon kontrol sistemi söyle). Bu bilgiler nerede o açıktır.

Haklısın - bir garip fikir.

IMO, bu mod_rewrite'ı için gerçekten kötü bir kullanımıdır. Doğru, yapılandırma bilgileri yerine kod temeli çok makinede, (Ben insanların bütün zaman yapmak görmek bir hata) ile aittir, ama mutlaka ya, web sunucusu yapılandırma ile ait değil.

Ben sürüm kontrolü ile yönetilen bir yapılandırma dosyasını öneriyoruz.

Eğer sankondan çevreyi ayarlamak isterseniz gibi bir şey yapabilirsiniz

php_value ENV "development"

Ve sonra $_SERVER diziden okumak

Aslında URL'sini değiştirme değil, her şeyden önce, sadece bir çizgi kullanmak yerine 1 $ kullanmayın. Dokümanlar başı olarak:

A dash indicates that no substitution should be performed (the existing path is passed through untouched). This is used when a flag (see below) needs to be applied without changing the path.

Ama gerçekten, ben cevap mod_env olduğunu düşünüyorum. SetEnv direktifleri içinde yer olabilir bloklar, gereksiz RewriteRule foo kaçınarak.

Eğer mevcut ortamı tanımlamak gerekir en iyi ve tek yer bootstrap olduğunu.

symfony bakmak veya agavi dosyalarını önyükleme.