एक आसान तरीका के निरपेक्ष पथ के लिए शुरू में निष्पादित स्क्रिप्ट कि स्क्रिप्ट में, और किसी भी अन्य स्क्रिप्ट के साथ शामिल include
, require
, require_once
एक का उपयोग करना है निरंतर और की शुरुआत में वहाँ वर्तमान स्क्रिप्ट पथ भंडारण मुख्य स्क्रिप्ट :
define( 'SCRIPT_ROOT', __FILE__ );
उपरोक्त समाधान तब उपयुक्त होता है जब एक "मुख्य" स्क्रिप्ट होती है जो include
हर दूसरे आवश्यक स्क्रिप्ट की तरह होती है, जैसा कि अधिकांश वेब अनुप्रयोगों में होता है।
अगर ऐसा नहीं है और फिर भी कई "अंतरंग लिपियाँ" हो सकती हैं, तो पुनर्परिभाषित से बचने के लिए और प्रत्येक स्क्रिप्ट के साथ शुरू होने वाले निरंतर के अंदर सही पथ संग्रहीत हो सकता है:
if( ! defined( 'SCRIPT_ROOT' ) ) {
define( 'SCRIPT_ROOT`, __FILE__ );
}
(वर्तमान में) स्वीकृत उत्तर के बारे में एक नोट :
उत्तर बताता है कि शुरू में निष्पादित स्क्रिप्ट पथ द्वारा लौटाए गए सरणी का पहला तत्व है get_included_files()
।
यह एक चतुर और सरल समाधान है और यह लिखने का समय है- (हम लगभग PHP 7.4.0 पर हैं) यह काम करता है ।
हालाँकि दस्तावेज़ीकरण को देखते हुए इस बात का कोई उल्लेख नहीं है कि शुरू में निष्पादित स्क्रिप्ट सरणी द्वारा लौटाए गए सरणी का पहला आइटम हैget_included_files()
।
हम केवल पढ़ते हैं
मूल रूप से कहा जाने वाला स्क्रिप्ट "शामिल फ़ाइल" माना जाता है, इसलिए इसे शामिल और परिवार द्वारा संदर्भित फ़ाइलों के साथ सूचीबद्ध किया जाएगा।
" स्क्रिप्ट को मूल रूप से कहा जाता है " लिखने के समय यह सरणी में पहला है, लेकिन तकनीकी रूप से - इसमें कोई गारंटी नहीं है कि यह भविष्य में नहीं बदलेगा।
एक नोट के बारे में realpath()
, __FILE__
और __DIR__
:
अन्य लोग उनके जवाब में के उपयोग का सुझाव दिया है __FILE__
, __DIR__
, dirname(__FILE__)
, realpath(__DIR__)
...
dirname(__FILE__)
__DIR__
(PHP 5.3.0 में पेश किया गया) के बराबर है , इसलिए बस उपयोग करें __DIR__
।
दोनों __FILE__
और __DIR__
हमेशा पूर्ण पथ हैं इसलिए realpath()
अनावश्यक है।