के लिए पथ शामिल है define
दोनों * nix और Windows के लिए यह पथ शामिल है?PHP सेट करने के लिए उचित तरीका * निक्स और विंडोज
define('INCPATH', realpath(dirname(__FILE__)) . '/');
ऊपर शामिल पिछला आगे-स्लैश नोट करें। क्या फॉरवर्ड-स्लैश में ओएस के दोनों के लिए भी शामिल है/इसकी आवश्यकता है?
संपादित करें (जवाब के साथ अपडेट):
मैं क्या इकट्ठा कर सकते हैं से, नीचे मेरी कोड उचित तरीके से सार्वभौमिक रूप से दोनों के लिए एक/शामिल की आवश्यकता होती है पथ को परिभाषित करने के लिए है * nix और Windows OS की। नीचे दी गई टिप्पणियों में कुछ भी सही करने के लिए स्वतंत्र महसूस करें।
जो चीज मुझे उलझन में रखती है वह कई उदाहरण थे जिन्हें मैंने back-slashes (\)
forward-slashes(/)
में प्रतिस्थापन दिखाया था। नीचे दिए गए कुछ उत्तरों के आधार पर, यह अनावश्यक है।
तो अंतिम सही कोड (शुद्धतावादी के लिए) है:
define('INCPATH', realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR);
कि कोड निम्नलिखित परिणाम का उत्पादन:
*nix: /path/to/the/file/
Windows: C:\Path To\the\file\
एक संक्षिप्त विवरण, काम कर रहे हमारे अंदर से (__FILE__
) बाहर (realpath()
):
FILE फ़ाइल का पूरा पथ और फ़ाइल नाम। हमेशा सिम्लिंक हल के साथ एक पूर्ण पथ होता है।
dirname() लौटाई गई स्ट्रिंग पथ किसी भी पिछला/घटक हटा दिया गया है। फ़ाइल नाम हटाने के लिए जिम्मेदार।
realpath() सफलता पर कैनोलिकीकृत (सामान्यीकृत/मानकीकृत) पूर्ण पथनाम देता है। परिणामस्वरूप पथ में कोई प्रतीकात्मक लिंक नहीं होगा, '/./'
या '/../'
घटक। मुझे लगता है कि यह पूर्णता के लिए शामिल है क्योंकि __FILE__
पहले से ही सिम्लिंक हल करता है। या शायद यह सापेक्ष पथ को हल करने के लिए शामिल है? किसी भी तरह से, यह हमारे लक्ष्य को मजबूत करने लगता है।
@ डेरेक, अच्छी जानकारी - धन्यवाद। मैं ओएस के दोनों कार्यों के ऊपर मेरी परिभाषा मानूंगा। – Jeff
मुझे अक्सर आश्चर्य होता है कि बैकस्लाश का उपयोग क्यों किया जाता है, क्योंकि इससे बचने के सिरदर्द और आगे स्लैश का कारण बनता है। – Ether