php dosyasına göre değişiyor yolu dahil

4 Cevap php

I'm brand new to php and I'm trying to work with some includes in my site and can't quite figure out how to make them all work correctly. My site structure is as follows

/ROOT/
   Config.php
   Index.php
   /ADMINISTRATION/
      Index.php
      mustInclude.php
      /USERS/
         Index.php

"MustInclude.php" "config.php" içerir ve Index.php her şeyi kısa sürede KULLANICILARI / içine "mustInclude.php" eklemeyi deneyin gibi çalışıyor, ama "mustInclude.php" içeriyorsa / Index.php kırılır çünkü " mustInclude.php "include '../config.php'; gibi bir yol kullanıyor ve bunun için / KULLANICI / index.php aynı göreli yol değildir / YÖNETİM / index.php gibi

Ben burada ne gerçekten emin değilim.

Bu artık benim yerel makinede. Benim dosya yapısı (/ Users / James / Siteler) verir, çünkü kullanılarak $_SERVER['DOCUMENT_ROOT'] yerine benim web yapısından daha bana hata veriyor (http://localhost/mysite)

Yardım?

4 Cevap

IMO yerde uygulama dizin yapısı içinde dosyaları dahil etmek için en iyi yolu PHP için app kök klasörü eklemek için yolu şunlardır:

<?php
set_include_path(get_include_path().PATH_SEPARATOR."/Users/James/Sites/app_name");

Sonra, sadece örneğin, uygulama kök klasörüne göreceli yollarını kullanarak dosyaları şunlardır:

<?php
require_once('ADMINISTRATION/USERS/Index.php');

Ben "küresel temel yolu" bir tür tanımlama ve oradan diğer yolları çözmekten öneririz. Gibi,

define('BASE_PATH', '/home/me/');
...
include(BASE_PATH . 'Config.php');
include(BASE_PATH . 'subdirectory/other.php');

ve benzerleri. (Yarı) mutlak yolları Bu tür ../ s sürü içeren göreli yollar daha az kırılgandır. (Göreli yolları ile temelden yanlış bir şey olduğunu söylüyorlar, ama onlar sadece doğru almak ve daha kolay kırılırlar zor konum değil. /a içeriyorsa b/c ve {[(2 )]} ../d/e, /b/ ya da / göre bu göreli, ya da biz /a başladı mı bağlıdır yok içerir vs doğrudan b/c denir? ben bile bilmiyorum. Daha iyi sadece mutlak yolları kullanmak, onlar kolay ve açık :-) demektir.

Bunun yerine '.. / Config.php' kullanarak kullanmayı deneyin

dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'config.php'

Bu şekilde her zaman bir düzey üstünde mevcut dosyadan bir düzey üstünde olduğunu bilecek.

kullanabilirsiniz __FILE__