फ़ाइल पथ और फर अभिलेखागार
फ़ाइल पथ और PHP में फर अभिलेखागार के साथ कार्य करना के साथ कार्य करना मुश्किल हो सकता है। एक फ़ार फ़ाइल के अंदर PHP कोड वर्तमान कार्य निर्देशिका के सापेक्ष फारस संग्रह, से संबंधित रिश्तेदार पथों का इलाज करेगा। यहाँ एक छोटी उदाहरण है:
आपको निम्न फ़ाइलों है कहते हैं:
phar/index.php
test.php
my.phar
index.php फ़ाइल phar निर्देशिका के अंदर स्थित है।
function does_it_exist($file){
return file_exists($file) ? "true" : "false";
}
बूटस्ट्रैप फ़ाइल जब phar फ़ाइल एक PHP स्क्रिप्ट से शामिल किया गया है निष्पादित किया जाता है: यह phar संग्रह के लिए बूटस्ट्रैप फ़ाइल है। हमारी बूटस्ट्रैप फ़ाइल केवल "does_it_exist" फ़ंक्शन घोषित करने का कारण बन जाएगी।
के test.php के अंदर अलग कोड चलाने की कोशिश करें और देखें कि क्या परिणाम प्रत्येक रन के लिए कर रहे हैं: भागो 4. पर
//Run 1:
require_once 'phar/index.php'; //PHP file
$file = __DIR__ . "/index.php"; //absolute path
echo does_it_exist($file); //prints "false"
//Run 2:
require_once 'phar/index.php'; //PHP file
$file = "index.php"; //relative path
echo does_it_exist($file); //prints "false"
//Run 3:
require_once 'my.phar'; //phar file
$file = __DIR__ . "/index.php"; //absolute path
echo does_it_exist($file); //prints "false"
//Run 4:
require_once 'my.phar'; //phar file
$file = "index.php"; //relative path
echo does_it_exist($file); //prints "true"
देखो इस कोड phar फ़ाइल भी शामिल है और समारोह एक रिश्तेदार पथ से गुजरता है। वर्तमान कार्यशील निर्देशिका से संबंधित, index.php मौजूद नहीं है। लेकिन फार संग्रह की सामग्री के सापेक्ष, यह अस्तित्व में है, यही कारण है कि यह "सच" प्रिंट करता है!
PHP का संस्करण क्या है? "ध्यान दें:: यूआरएल रैपर केवल verions पर => पीएचपी 5.0.0 –
आप के लिए [' file_exists() '] (http://php.net/file_exists) प्रलेखन से निम्नलिखित सिफारिश करने की कोशिश की हो सकता है इस समारोह के परिणाम कैश किए गए हैं। अधिक जानकारी के लिए clearstatcache() देखें। " –
हां, मैं clearstatcache की कोशिश की है() - लेकिन कैश में संग्रहीत हैं 'के रूप में मौजूद है' और मेरी समस्या यह है कि इसकी यह नहीं मिल रहा है - तो वह निश्चित रूप से दोषी नहीं है। – Lan