2012-10-18 12 views
27

मैं निम्न फ़ाइल संरचना है:पीएचपी की आवश्यकता होती है() रिश्तेदार पथ त्रुटि

:

require('../../dir2/file3.php') 

file2.phpfile1.php इस तरह की आवश्यकता है:

 
rootDIR 
    dir1 
     subdir1 
      file0.php 
      file1.php 
    dir2 
     file2.php 
     file3.php 
     file4.php 

file1.php इस तरह file3 और dir2 से file4 की आवश्यकता है

require('../dir1/subdir1/file1.php') 

लेकिन फिर फ़ाइल 1 में फ़ाइल फ़ाइल खोलने में विफल रहता है और file4 (शायद पथ relativeness के कारण)

हालांकि क्या कारण है और मैं file2.php के लिए क्या कर सकते हैं ताकि file1.php ठीक से की आवश्यकता होती है file3 और file4

+2

http://stackoverflow.com/questions/11383960/how-to-refer-back-to-public-html-root-file-using-include-after-going-up-one-file यहां आपको एक स्पष्ट स्पष्टीकरण। –

उत्तर

37

पथ से पहले dirname(__FILE__) जोड़ने, जैसे प्रयास करें:

require(dirname(__FILE__).'/../../dir2/file3.php'); 

इसमें रूट निर्देशिका

+9

यदि आप 5 पर हैं।3 या उच्चतर आप __DIR__ का बेहतर उपयोग करेंगे, जो कि नामनाम (__ FILE__) जैसा ही है लेकिन आपको 'महंगा' dirname() कॉल सहेजता है। –

+1

धन्यवाद .. क्या आप मुझे इस मामले में '/../dir' और '../dir' –

+1

के बीच अंतर बता सकते हैं, आप /../ क्योंकि dirname (__ FILE__) एक स्ट्रिंग को वापस लौटाते हैं: '/ root/dir1/dir2/dir3 ', आखिरी'/'गायब है, इसलिए बिना 2 पथों को विलय किए बिना यह' /root/dir1/dir2/dir3../ 'बन जाएगा। – Baronth

-1

से शुरू होने वाली फ़ाइल शामिल होनी चाहिए, मुझे लगता है कि आपका cwd dir2 है। प्रयास करें:

require("file3.php"); 
require("file4.php"); 
36

संबंधित पथ सीधे बजाय dirname(__FILE__) आप __DIR__ उपयोग कर सकते हैं (जब तक आप using PHP 5.3.0 and above हैं):

require(__DIR__.'/../../dir2/file3.php'); 

अतिरिक्त आगे जोड़ने का ध्यान रखें पथ की शुरुआत में स्लेश उद्धरण के भीतर।

देखें:

3

यहाँ एक उचित सलाह, कभी नहीं के रूप में "../../" आपके वेब एप्लिकेशन में संबंधित पथ ऐसी बातों का उपयोग है । रखरखाव के लिए पढ़ना और भयानक करना मुश्किल है।

  1. जैसा कि आप प्रमाणित कर सकते हैं। यह जानना बेहद मुश्किल है कि आप क्या इंगित कर रहे हैं।

  2. यदि आपको अपने आवेदन के फ़ोल्डर स्तर या इसके कुछ हिस्सों को बदलने की आवश्यकता है। यह त्रुटियों से पूरी तरह से प्रवण है, और संभवतः कुछ ऐसा तोड़ देगा जो डीबग करने के लिए भयानक है।

इसके बजाय, define आपका मुख्य पथ (ओं) के लिए अपने बूटस्ट्रैप फ़ाइल की कुछ स्थिरांक और उसके बाद का उपयोग करें:

require(MY_DIR.'/dir2/file3.php'); 

वहाँ से आपके ऐप्लिकेशन आगे बढ़ते, में अपने MY_DIR स्थिरांक की जगह के रूप में के रूप में आसान है एक एकल फाइल

संबंधित मुद्दे