include dirname(__FILE__).'/../../index.php';
यहां आपका सबसे अच्छा दांव है, और यह अधिकांश रिश्तेदार पथ के कीड़े से बचेंगे जिन्हें आप अन्य समाधानों के साथ सामना कर सकते हैं।
वास्तव में, यह शामिल करने के लिए मजबूर करेगा हमेशा वर्तमान स्क्रिप्ट की स्थिति के सापेक्ष जहां यह कोड रखा गया है (जो आपके आवेदन की वास्तुकला को परिभाषित करता है, चूंकि स्थान सबसे अधिक स्थिर है)। यह सिर्फ करने से अलग है include '../../index.php'
जो अपेक्षाकृत निष्पादित (जिसे "कॉलिंग" नाम भी कहा जाता है) स्क्रिप्ट और फिर वर्तमान में काम कर रहे निर्देशिका के लिए अपेक्षाकृत शामिल होगा, जो मूल स्क्रिप्ट को इंगित करेगा जिसमें आपकी स्क्रिप्ट शामिल है, बजाय आपके शामिल स्क्रिप्ट के पथ से हल करने के लिए ।
PHP प्रलेखन से:
फ़ाइल दिए गए फ़ाइल पथ के आधार पर शामिल किए गए हैं, या यदि कोई नहीं दिया गया है, तो इसमें शामिल_पठ निर्दिष्ट है। यदि फ़ाइल शामिल_पाठ में नहीं मिली है, तो अंतिम रूप से कॉलिंग स्क्रिप्ट की अपनी निर्देशिका और वर्तमान कार्यशील निर्देशिका को विफल होने से पहले जाँच करेगा।
और सबसे पुरानी पोस्ट जो मैंने इस ट्रिक की तारीख 2003 तक की है, को टेपकेन द्वारा उद्धृत किया है ।
आप निम्न सेटअप के साथ परीक्षण कर सकते हैं:
इस तरह एक लेआउट बनाएँ:
htdocs
¦ parent.php
¦ goal.php
¦
+---sub
¦ included.php
¦ goal.php
में parent.php
, डाला:
<?php
include dirname(__FILE__).'/sub/included.php';
?>
में sub/included.php
, डाला:
<?php
print("WRONG : " . realpath('goal.php'));
print("GOOD : " . realpath(dirname(__FILE__).'/goal.php'));
?>
पहुँचते ही परिणाम parent.php
:
WRONG : X:\htdocs\goal.php
GOOD : X:\htdocs\sub\goal.php
जैसा कि हम देख सकते हैं, पहले मामले में, कॉलिंग स्क्रिप्ट से पथ को हल किया जाता है parent.php
, जबकि dirname(__FILE__).'/path'
ट्रिक का उपयोग करके , स्क्रिप्ट को included.php
उस कोड से किया जाता है जहां कोड रखा गया है।
खबरदार, जो अन्यत्र पढ़ा जा सकता है, उसके विपरीत चाल के बराबर निम्नलिखित नहीं:
include '/../../index.php';
दरअसल, प्रीपेंडिंग /
काम करेगा, लेकिन यह include ../../index.php
कॉलिंग स्क्रिप्ट से ही हल होगा (अंतर यह है कि include_path
बाद में देखा नहीं जाएगा यदि यह विफल हो जाता है)। PHP डॉक्टर से :
यदि कोई पथ परिभाषित किया गया है - चाहे निरपेक्ष (एक ड्राइव अक्षर से शुरू हो या \, विंडोज पर, या / यूनिक्स / लिनक्स सिस्टम पर) या वर्तमान निर्देशिका के सापेक्ष (शुरू या। ..) - शामिल_पठ को पूरी तरह से नजरअंदाज कर दिया जाएगा।