यहां एक समस्या है जिसे मैं हाल ही में चला रहा हूं - वेबहोस्ट पर एक गलत कॉन्फ़िगर किया गया अपाचे। इसका मतलब है कि सभी स्क्रिप्ट जो $_SERVER['DOCUMENT_ROOT']
ब्रेक पर भरोसा करते हैं। मैंने पाया है कि सबसे आसान कामकाज बस कुछ ग्लोबल में चर सेट सेट है जो साझा किया जाता है, लेकिन यह दर्द है इसे भूलना नहीं है। मेरा सवाल है, मैं प्रोग्रामिक रूप से सही दस्तावेज़ रूट कैसे निर्धारित करूं?PHP में दस्तावेज़ रूट को प्रोग्रामेटिक रूप से निर्धारित करने के लिए कैसे करें?
उदाहरण के लिए, एक मेजबान पर, सेटअप इस तरह है:
$_SERVER['DOCUMENT_ROOT'] == '/htdocs'
असली दस्तावेज़ जड़ें हैं:
test.example.com -> /data/htdocs/example.com/test
www.example.com -> /data/htdocs/example.com/www
और मैं एक स्क्रिप्ट है कि www.example.com/blog/
से चलाए जाने के दौरान चाहते हैं (पर पथ /data/htdocs/example.com/www/blog
) /data/htdocs/example.com/www
का सही मान प्राप्त करने के लिए।
एक और मेजबान पर, सेटअप थोड़ा अलग है:
$_SERVER['DOCUMENT_ROOT'] == '/srv'
test.example.com -> /home/virtual_web/example.com/public_html/test
www.example.com -> /home/virtual_web/example.com/public_html/www
वहाँ इस के लिए किसी भी समाधान है? या केवल $_SERVER['DOCUMENT_ROOT']
पर भरोसा न करने का एकमात्र तरीका है और मैं अपने साइट पर चल रहे सभी सॉफ़्टवेयर को ठीक कर सकता हूं? होस्टिंग के पक्ष में इसे ठीक करना एक विकल्प प्रतीत नहीं होता है, मुझे अभी तक एक होस्ट का सामना करना पड़ेगा जहां यह सही तरीके से कॉन्फ़िगर किया गया था। मुझे सबसे अच्छा मिला एक दस्तावेज़ रूट www.example.com पर इंगित करता था, जो कम से कम open_basedir के अंदर था - उन्होंने अभी तक एक और नामकरण योजना का उपयोग किया था, www.example.com /u2/www/example_com/data/www/
पर इंगित करेगा।
कुछ स्क्रिप्ट्स जिन्हें मैंने इंस्टॉल किया है वे "बहुत स्मार्ट" हैं और जानते हैं कि कौन सी निर्देशिका (सैद्धांतिक दस्तावेज़ रूट के सापेक्ष) में स्थापित हैं, और इसे दस्तावेज़ रूट (इसे डेटाबेस से प्राप्त करने के बाद) में संलग्न करें। निर्देशिकाओं को पट्टी करने के लिए मुझे अभी भी प्रत्येक निर्देशिका के लिए कोड को संशोधित करना होगा ... या नहीं? –