2012-12-16 17 views
5

मेरे निर्देशिका संरचना इस तरह दिखता है: त्रुटियों कीपीएचपी - सापेक्ष पथ "की आवश्यकता होती है"

blog -> admin -> index.php 
blog.php 
db.php 
functions.php 

मैं कोशिश कर रहे हैं include को (require, वास्तव में) admin/index.php में blog.php, लेकिन का सामना करना पड़ बहुत सारे। मैं एक PHP पाठ्यक्रम का पालन कर रहा हूं, और प्रशिक्षक एक ही चीज़ सफलतापूर्वक करता है।

व्यवस्थापक/index.php:

require "../blog.php"; 

बारी में, अपनी निर्देशिका में दो से अधिक फ़ाइलों की आवश्यकता है जो,।

require "db.php"; 
require "functions.php"; 
+0

मैं तुम सिर्फ इसे बाहर एक स्तर कदम, यानी की जरूरत है। '../../ blog.php' यह सोचते हैं कि' 'blog.php' blog' फ़ोल्डर में नहीं है। – prodigitalson

+0

मुझे नहीं लगता कि यह काम करेगा। 'blog.php'' ब्लॉग' निर्देशिका में है। – Rafay

+0

निर्देशिका संरचना के अपने अंकन आह मेरे लिए भ्रामक था :-) – prodigitalson

उत्तर

18

यदि आपको लगता है कि सापेक्ष शामिल पथ अपेक्षित रूप से काम नहीं कर रहे हैं, तो त्वरित समाधान __DIR__ को उस पथ के सामने प्रस्तुत करना है जिसे आप शामिल करने का प्रयास कर रहे हैं।

require __DIR__ . "/../blog.php"; 

यह उचित रूप से साफ है, और आपको पथ या कार्यशील निर्देशिका को संशोधित करने की आवश्यकता नहीं है।

+0

यह काम किया। धन्यवाद! हालांकि मुझे नहीं पता कि मुझे ऐसा क्यों करना है। प्रशिक्षक को 'आवश्यकता' से दूर हो जाता है ../ blog.php "; बिना किसी समस्या के। क्या यह ओएस मतभेदों के कारण है? वह मैक पर है, और मैं विंडोज़ पर हूं। – Rafay

+2

मैं वास्तव में पूरी तरह से यकीन नहीं है - मेरा मानना ​​है कि यह वर्तमान कार्यशील निर्देशिका हमेशा स्क्रिप्ट की निर्देशिका मिलान नहीं के साथ क्या करना है। –

+1

@ राफय: वैसे भी यह एक बुरा अभ्यास है। आपको हमेशा पूर्ण पथ की गणना करनी चाहिए और फिर आवश्यकता/शामिल करना चाहिए। – prodigitalson

-3

मुझे chdir($_SERVER['DOCUMENT_ROOT']) के साथ अपनी फाइलें शुरू करना पसंद है। यह मुझे मेरे सभी शामिल करने के लिए एक अच्छा और तार्किक आधार पथ प्राप्त करने की अनुमति देता है।

+0

है यही कारण है कि आप php.ini में include_path निर्देश दिया है। –

+0

'include_path' हालांकि' file_exists' जैसी चीजों के लिए लागू नहीं होता; कोई वास्तविक उपयोग के साथ) php फ़ाइल प्रति –

+0

और एक फ़ाइल आपरेशन। पीएसआर -0 का उपयोग करने या __DIR__ का उपयोग करने पर विचार करें। –

1

आप इस सहित रहे हैं, तो फ़ाइलें index.php में db.php and functions.php तो आप इस कोड

require "../db.php"; 
require "../functions.php"; 

लिखने के लिए है या यदि आप blog.php में इस फाइल को शामिल कर रहे हैं तो यह कोड

require "db.php"; 
require "functions.php"; 
1

आप की जरूरत है लिखने अपने php.ini में include_path सेट करें।

आप रन-टाइम में इसे सेट करना चाहते हैं, तो set_include_path() का उपयोग करें।

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