/ erişmek için en iyi yolu, PHP SITE_ROOT ve SERVER_ROOT değerleri oluşturmak?

6 Cevap

Ben 2 farklı yolları içerir diğeri için js / css vb I istimal ihtiyacım mod_rewrite. Aşağıdaki çalışıyor ....

Şu anda bütün dosyaları üstündeki bu içerirler

define('SERVER_ROOT',   'C:/wamp/www/site_folder/');
define('SITE_ROOT',     'http://localhost/site_folder/');

ve sonra dosyaları şöyle denir:

require_once SERVER_ROOT . 'st_wd_assets/inc/func_st_wd.php';    

<link rel="stylesheet" type="text/css" href="<?php echo SITE_ROOT;?>st_pages/user_area/css/user_area.css" media="screen"/>

Muhtemelen gördüğünüz gibi, bu i localhost ve canlı sunucu arasındaki versiyonlarını hareket her dosya her şey üst güncellemek için büyük bir angarya olacak.

Bu KÖK değerlerini tanımlayan en iyi / standart bir yolu nedir?

Ben $_SERVER süper global bir çözüm göremiyorum? Insanlar normalde sadece VirtualHosts kullanıyor musunuz? Ama sonra yine KÖK sabitleri tanımlamak için gerekli değil mi?

6 Cevap

Yes. People normally just use VirtualHosts.

Çeşitli yolları vardır.

  • Sen bir yapılandırma dosyası eklemek için göreli bir yol kullanabilirsiniz.
  • Orada bir config dosyası yerleştirmek için $ _SERVER süper bir DOCUMENT_ROOT kullanabilirsiniz.
  • Eğer mümkünse, web-sunucu geneli kullanabilirsiniz. gibi php_value auto_prepend_file. htaccess içinde
  • Ve en azından sizin çevreyi algılamak ve üst koşullarda yazılmış iki kökleri, iki arasında seçim yapabilirsiniz.
  • Ve evet, mod_rewrite kullanarak eğer - tek dosya bu ayarları yerleştirmek için - böylece tüm diğer dosyaları içerecektir bir ön denetleyicisi olun.

neden config.php dosyası ile yapmak değil

define('SERVER_ROOT',   'C:/wamp/www/site_folder/');
define('SITE_ROOT',     'http://localhost/site_folder/');

ve her dosyanın en başında ekleme değil.

require_once ('config.php');

kez yapılan - gelecekte hiçbir sorun yok. Eou sitenizi taşıyorsanız - basitçe yapılandırma dosyası üzerine düzenleyin ya da değil.

Göreceli bir arada / gerektirir ve autoloading of classes Eğer tamamen SERVER_ROOT kaçınabilmenizi içerir ile. Lütfen SITE_ROOT gibi bir şey gerektiğinde dahil edilir bir config dosyasına aittir.

Eğer VirtualHosts kullanarak değilseniz o zaman $ _SERVER ['DOCUMENT_ROOT'] doğru değeri döndürür olmayabilir. Döndürecektir gibi sitenize için "C :/ wamp / www" görünüyor

Bu basit bir çizgi (dizin ayırıcı) ardından geçerli dizin olarak SERVER_ROOT ayarlamak için tanımlayabilirsiniz kullanabilirsiniz:

define('SERVER_ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);

Bu daha sonra "C :/ wamp / www / site_folder /" sunucu için SERVER_ROOT olarak tanımlamak gerekir.

Tüm. Php dosyalarını "C :/ wamp / www / site_folder /" içerdiği sürece Ancak, bu muhtemelen işe yaramaz. Tanımladığınız klasörün subdirectorie vardır. Php dosyaları için farklı değerler dönecektir.

Ben şu anda çalışan php bilgisayarın adını döndürür php_uname('n') hangi kullanın. Bu ile, bilgisayar başına yapılandırma dosyaları yapabilirsiniz:

$configFile = 'config/' . php_uname('n') . '.config.php';

if (file_exists($configFile)) {
    include($configFile);
}

Sonra config / your_computer_name.config.php yapılandırma direktifleri ve config / live_servers_name.config.php koydu.

Lütfen docroot bir dosya oluşturun. Settings.inc diyoruz.

//settings.inc:

define('SITE_ROOT',     'site_folder');
require_once (dirname(__FILE__)) . '/st_wd_assets/inc/func_st_wd.php';

Sonra dosyaları her,

require_once (dirname(__FILE__)) . "/settings.inc";

Css veya köprüler için kök ve etajer endişe etmeyin. Sadece bir "/" ile önsöz.