Ben belirli ortam içeriği yapılandırmak miyim?

5 Cevap php

Eğer tarayıcı türüne göre belirli içerik üretebilir Aynı şekilde sunucusu veya site adı referans olmadan PHP çalıştıran sunucu dayalı özel bir içerik oluşturmak için bir yolu var mı?

Örneğin, PHP otomatik oldu çevreyi algılamak ve DB bağlantıları gibi şeyler yapılandırmak, bu gelişme, ITS, UAT veya üretim ortamı olsaydı bağlı hataları vb için ini_set için bir yoldur.

Ben düşündüm 2 yolu gelişme ve QA ortamlarını gösteren bir HTTP başlığı tanımak için ya php.ini özel özelliklere sahip idi.

Ben biraz uyandı ve http başlıklarını okumak için php fonksiyonu öğrendim ama php ben web sunucusu kurmak ve hepsi de php.ini içinde olabilir eğer ben bilmiyorum her şeyi geçersiz kılar var.

Ben php.ini özel değerler eklemek mümkün olup olmadığını hiçbir fikrim yok ama ben bir testi vardı ve ini_get (ben tabii php.ini değiştirdikten sonra web sunucusunu yeniden başlatılması vardı) bulmak olmaz.

5 Cevap

IIS üzerinde FastCGI kullanarak Çevre değişkenleri ayarlayabilirsiniz. Onlar $ _ENV kullanılabilir olması için görünmüyor ama getenv ("Değişkenadı") ile alınabilir.

To configure FastCGI environment variables in IIS 5 or 6 you need to edit: C:\%systemdrive%\system32\inetsrv\fcgiext.ini

Örneğin:

[Types]
php=d:\Dev\PHP\php-cgi.exe
php:1=PHP Site 1
*=Wildcard Mapping

[d:\Dev\PHP\php-cgi.exe]
QueueLength=999
MaxInstances=20
InstanceMaxRequests=500

[PHP Site 1]
ExePath=d:\Dev\PHP\php-cgi.exe
EnvironmentVars=PHPRC:d:\Dev\PHP\,SiteType:Developer

Bu durumda bu yüzden sadece tek bir site ve [Türleri] 2. satırında belirtildiği gibi site kimliği 1'dir var IIS 5'tir.

IIS 6 üzerinde birden fazla site olabilir ve aşağıdaki bağlantı Sitesi kimliğini bulmak için nasıl söyler: http://weblogs.asp.net/owscott/archive/2005/07/29/how-to-find-the-siteid-in-iis5-and-iis6.aspx.

IIS 7 IIS 7 için Yönetim Paketi kurulduktan görünüşte bir kez UI üzerinden yapılandırılabilir.

Eğer apache bir ortam değişkeni (conf, vhost. htaccess veya httpd daem olarak) belirtin ve ardından $ _ENVsuperglobal yoluyla acces olabilir

Farklı sunucular için farklı ayarları yüklemek için aşağıdakileri kullanabilirsiniz:

switch ($_SERVER['SERVER_NAME']) {
case 'web-host': case '10.0.0.208':
	# Set DB Settings
case 'mydomain.com': default:
	# Live server settings
}

Şimdiye kadar onunla ilgili bir sorun olmadı

Henüz söz edilmemiştir Başka bir alternatif sitesi yazısının başında dahil olacağını yapılandırma dosyasını bir sunucu-spesifik (ama aynı adı taşıyan) oluşturmak olacaktır. Bu sunucu özgü yapılandırma dosyada sabitleri olarak yapılandırma değişkenlerini ayarlayabilirsiniz. Daha sonra yüklenen bir 'genel' yapılandırma dosyası varsa sabitleri yeniden olamaz gibi bu şekilde, kendi değerlerini sunucuya özgü yapılandırma dosyasında geçersiz olabilir. Sen eşitlemeler gelen sunucu özgü yapılandırma dosya adı hariç, ya da yanlışlıkla yazılmaz böylece ana içeriğin dışında bir yol tutmak ya isterim.

Bu amaçla bile yardımı ile sürekli Dizileri yapılandırabilirsiniz Constant Array 2 class.

Sunucu-özel yapılandırma dosyaları kullanılır zaman geçerli SERVER_NAME hakkında endişelenmenize gerek yoktur - bu daha kolay ne olursa QA amaçlar için de kullanışlı olabilir mevcut sistemin adının amaçlanan ortamı tanımlamak için yapar.