पक्के का स्वीकृत उत्तर अधूरा है और सामान्य संदर्भ में भ्रामक है। यदि फ़ाइल को एक रिश्तेदार पथ के रूप में प्रदान किया जाता है, तो तथाकथित भाषा निर्माण include
निम्नलिखित तरीके से इसे खोजेगा।
सबसे पहले, यह पर्यावरण चर के मार्गों से गुजरेगा include_path
, जिसे इसके साथ सेट किया जा सकता है ini_set
। यदि यह विफल रहता है, तो यह कॉलिंग स्क्रिप्ट की अपनी निर्देशिका dirname(__FILE__)
( __DIR__
php> = 5.3 के साथ) में खोज करेगा। यदि यह भी विफल हो जाता है, तो ही यह कार्यशील निर्देशिका में खोज करेगा! यह सिर्फ यह बताता है कि, डिफ़ॉल्ट रूप से, पर्यावरण चर के include_path
साथ शुरू होता है .
, जो वर्तमान कार्यशील निर्देशिका है। यही कारण है कि यह वर्तमान कार्यशील निर्देशिका में पहले खोज करता है। Http://php.net/manual/en/function.include.php देखें ।
फ़ाइल दिए गए फ़ाइल पथ के आधार पर शामिल किए गए हैं या, यदि कोई नहीं दिया गया है, तो इसमें शामिल_path निर्दिष्ट है। यदि फ़ाइल शामिल_पाठ में नहीं मिली है, तो अंतिम रूप से कॉलिंग स्क्रिप्ट की अपनी निर्देशिका और वर्तमान कार्यशील निर्देशिका को विफल होने से पहले जाँच करेगा।
तो, प्रश्न के पहले भाग का सही उत्तर यह है कि यह बात करता है कि इसमें शामिल कॉलिंग स्क्रिप्ट कहाँ स्थित है। प्रश्न के अंतिम भाग का उत्तर यह है कि एक वेब सर्वर के संदर्भ में प्रारंभिक कार्यशील निर्देशिका, स्क्रिप्ट की निर्देशिका है, वह स्क्रिप्ट जिसमें PHP द्वारा नियंत्रित किए जाने के दौरान अन्य सभी शामिल हैं। कमांड लाइन के संदर्भ में, प्रारंभिक कार्यशील निर्देशिका वह है जो तब होती है जब php को प्रॉम्प्ट पर लागू किया जाता है, जरूरी नहीं कि वह निर्देशिका जहां स्क्रिप्ट कहा जाता है। वर्तमान कार्यशील निर्देशिका, तथापि, पीएचपी समारोह के साथ चलाने के समय में बदला जा सकता है chdir
। Http://php.net/manual/en/function.chdir.php देखें ।
इस अनुच्छेद को अन्य उत्तरों पर टिप्पणी करने के लिए जोड़ा जाता है। कुछ ने उल्लेख किया है कि भरोसा include_path
करना कम मज़बूत है और इस तरह से ./path
या जैसे पूर्ण पथ का उपयोग करना बेहतर होता है __DIR__ . /path
। कुछ लोग यह कहते हुए चले गए कि कार्यशील निर्देशिका पर निर्भर रहना .
स्वयं सुरक्षित नहीं है, क्योंकि इसे बदला जा सकता है। हालांकि, कुछ समय, आपको पर्यावरण मूल्यों पर भरोसा करने की आवश्यकता है। उदाहरण के लिए, आप include_path
खाली सेट करना चाह सकते हैं , ताकि कॉलिंग स्क्रिप्ट की निर्देशिका पहली जगह हो जो वह खोज करेगी, वर्तमान कार्य निर्देशिका से पहले भी। कोड पहले से ही बाहरी स्रोतों से नियमित रूप से लिखा और अपडेट किया जा सकता है और आप __DIR__
कोड के अपडेट होने पर हर बार उपसर्ग को फिर से स्थापित नहीं करना चाहते ।