सारांश
यह उदाहरण मानता है कि आप हमेशा जानते हैं कि अपाचे रूट फ़ोल्डर '/ var / www /' है और आप अगले फ़ोल्डर पथ (जैसे '/ var / www / my_website_folder') को खोजने का प्रयास कर रहे हैं। इसके अलावा यह एक स्क्रिप्ट या वेब ब्राउज़र से काम करता है जिसके कारण अतिरिक्त कोड होता है।
कोड PHP7
function getHtmlRootFolder(string $root = '/var/www/') {
// -- try to use DOCUMENT_ROOT first --
$ret = str_replace(' ', '', $_SERVER['DOCUMENT_ROOT']);
$ret = rtrim($ret, '/') . '/';
// -- if doesn't contain root path, find using this file's loc. path --
if (!preg_match("#".$root."#", $ret)) {
$root = rtrim($root, '/') . '/';
$root_arr = explode("/", $root);
$pwd_arr = explode("/", getcwd());
$ret = $root . $pwd_arr[count($root_arr) - 1];
}
return (preg_match("#".$root."#", $ret)) ? rtrim($ret, '/') . '/' : null;
}
उदाहरण
echo getHtmlRootFolder();
आउटपुट:
/var/www/somedir/
विवरण:
मूल रूप से पहले DOCUMENT_ROOT प्राप्त करने की कोशिश करता है अगर इसमें '/ var / www /' शामिल है तो इसका उपयोग करें, अन्यथा वर्तमान dir (जो कि परियोजना के अंदर मौजूद है) प्राप्त करें और $ रूट पथ की गणना के आधार पर अगला पथ मान प्राप्त करें। नोट: सभी मामलों में '/' के साथ समाप्त होने वाले पथ रिटर्न को सुनिश्चित करने के लिए जोड़ा गया rtrim विवरण। यह / var / www / से बड़ा होने की आवश्यकता के लिए इसकी जाँच नहीं करता है / यह एक संभावित प्रतिक्रिया के रूप में / var / www / भी वापस कर सकता है।