Basit bir yolu mutlak yolunu sahip olmak başlangıçta çalıştırılan komut o komut, ve içerdiği diğer herhangi komut include
, require
, require_once
bir kullanmaktır sabit ve başlangıç orada geçerli komut yolunu depolamak ana senaryo :
define( 'SCRIPT_ROOT', __FILE__ );
Yukarıdaki çözüm, tek bir "ana" komut dosyası olduğunda uygundur. include
, çoğu web uygulamasında olduğu gibi, diğer tüm gerekli komut uygundur.
Durum böyle değilse ve birkaç "intital komut dosyası" olabilirse, yeniden tanımlamaları önlemek ve sabitin içinde doğru yolu saklamak için her komut dosyası ile başlayabilir:
if( ! defined( 'SCRIPT_ROOT' ) ) {
define( 'SCRIPT_ROOT`, __FILE__ );
}
(Şu anda) kabul edilen cevap hakkında bir not :
cevap, ilk olarak çalıştırılan kod yolunun dizinin döndürdüğü ilk eleman olduğunu belirtir. get_included_files()
.
Bu akıllı ve basit bir çözüm ve -yazma zamanında- (neredeyse PHP 7.4.0'dayız) işe yarıyor .
Bununla birlikte, belgelere bakıldığında, ilk çalıştırılan komut dosyasının döndürülen dizinin ilk öğesi olduğu belirtilmez get_included_files()
.
Sadece okuruz
Başlangıçta komut dosyası "dahil edilen dosya" olarak kabul edilir, bu nedenle include ve ailesi tarafından başvurulan dosyalarla birlikte listelenir.
" Orijinal olarak adlandırılan komut dosyası " yazılırken dizideki ilk komuttur ancak teknik olarak bunun gelecekte değişmeyeceğine dair bir garanti yoktur.
Bir not hakkında realpath()
, __FILE__
ve __DIR__
:
Diğerleri cevaplarında kullanımını önermiştir __FILE__
, __DIR__
, dirname(__FILE__)
, realpath(__DIR__)
...
dirname(__FILE__)
eşittir __DIR__
(PHP 5.3.0'da tanıtılmıştır), bu yüzden sadece kullanın __DIR__
.
Her ikisi de __FILE__
ve __DIR__
her zaman mutlak yollardır, bu yüzden realpath()
gereksizdir.