2009-11-13 7 views
9

क्या यह जांचने का कोई तरीका है कि फाइलें (या तो पूर्ण या सापेक्ष पथ के साथ) मौजूद हैं या नहीं? मैं PHP का उपयोग कर रहा हूँ। मुझे कुछ विधि मिलीं लेकिन वे केवल पूर्ण या रिश्तेदार स्वीकार करते हैं लेकिन दोनों नहीं। धन्यवाद।जांचें कि क्या पूर्ण और सापेक्ष पथ वाली फ़ाइलें मौजूद हैं

+0

मैं यह उल्लेख करना भूल गया कि इसके लिए तर्क क्या है, यदि कोई फ़ाइल किसी विकल्प के लिए दूरस्थ यूआरएल से दस्तावेज़ रूट चेक में मौजूद नहीं है। मुझे लगता है कि रोब का जवाब बीमार है। धन्यवाद दोस्तों – uji

उत्तर

25

file_exists($file); काम कर देता है दोनों सापेक्ष और पूर्ण पथ के लिए।

क्या अधिक उपयोगी है, हालांकि इसे बिना हार्डकोड किए पूर्ण पथ हैं। ऐसा करने का सबसे अच्छा तरीका dirname(__FILE__) का उपयोग करता है जो विंडोज प्रारूप के ईथर यूनिक्स में वर्तमान फ़ाइल का निर्देशिका का पूरा पथ प्राप्त करता है। फिर हम realpath() का उपयोग करते हैं जो फ़ाइल मौजूद नहीं होने पर आसानी से झूठी वापसी करता है। आपको बस इतना करना है कि फ़ाइल की निर्देशिका से एक रिश्तेदार पथ निर्दिष्ट और यह सब एक साथ रखा जाता है:

$path = dirname(__FILE__) . '/include.php'; 
if (realpath($path)) { 
    include($path); 
} 
+0

realpath() canonical पथ वापस, तो प्रतीकात्मक लिंक मिटा दें। क्या इससे बचने का कोई तरीका है, और यदि पथ कैनोनिकल नहीं है तो भी पथ पूर्ण है? – Pierre

+0

अच्छी शिक्षण कौशल – unkown

3

file_exists($path) पूर्ण पथ या स्क्रिप्ट स्थान के सापेक्ष जांच करेगा। आप file_exists("{$_SERVER['DOCUMENT_ROOT']}path");

की कोशिश कर सकते आप दस्तावेज़ जड़ के सापेक्ष जाँच करना चाहते हैं आप एक समारोह है कि दोनों सापेक्ष और निरपेक्ष पथ कुछ इस तरह काम करना चाहिए ले जाएगा (untested) चाहते हैं:

function check_file($path) { 
    return (file_exists($path) || file_exists("{$_SERVER['DOCUMENT_ROOT']}path")); 
} 
4

आप दिए गए पथ के लिए अगर एक फ़ाइल मौजूद है की जाँच करें और है कि फाइल करने के लिए विस्तारित पथ को पुनः प्राप्त करने realpath उपयोग कर सकते हैं:

$absPath = realpath($path); 
if ($absPath === false) { 
    // invalid path 
} 
संबंधित मुद्दे