
जब प्रोग्रांस में PHP में एक वेब सर्वर आम तौर पर की भीड़ शामिल ओ है आपके वेब अनुप्रयोग की अंय फ़ाइलें. या तो क्योंकि आप कुछ वर्ग या कुछ कार्यों की जरूरत है कि, आसानी के लिए, मॉड्यूलरता और अपने कोड को साफ, आप अच्छी तरह से वर्गीकृत और संरचित फ़ाइलों की एक और श्रृंखला में पता लगा सकते हैं.
में फ़ाइलों के लिए शामिल किए जाने या अनुरोध PHP, या फ़ंक्शन का उपयोग करके भी फ़ाइल तक पहुँच fopen, जब पथ सही हो, आम तौर पर नहीं देती समस्याएं, जब तक कि समस्याग्रस्त फ़ाइल, या निर्देशिका है कि यह मेजबान, नहीं है अनुमतियाँ प्रासंगिक पढ़ना. लेकिन दूसरी बार, चाहे के रूप में सुरक्षा उपाय या किसी भी अन्य कारण के लिए, जो लोग पहुंच की आवश्यकता के लिए फ़ाइलें हमारी परियोजना के वेब फ़ोल्डर के बाहर स्थित है, यानी, करने के लिए फ़ोल्डर में निचले स्तर के नाले को रूट फ़ोल्डर हमारी वेबसाइट के.
आप संभवतः एक बार हुआ है कि, करने का प्रयास करते समय बाहर पहुंच के रूट फ़ोल्डर अपनी वेबसाइट के, आपके पास सिस्टम निषेध पहुँच, फिर भी उसी के लिए आवश्यक अनुमतियाँ होने, निंन संदेश के साथ:
1 | open_basedir restriction in effect. File(../ruta/archivo.php) is not within the allowed path(s) |
यह हमें बताता है कि निर्देशक PHP, open_basedir, है रोकने मैं उस स्थान पर जाता हूं जहां फ़ाइल स्थित है. के रूप में आप पर चर्चा, open_basedir एक निर्देश है जो इंगित करता है कि सीमा फ़ाइल है कि PHP पथ या निर्दिष्ट निर्देशिका ट्री के अनुसार उपयोग कर सकते है, इस तरह, यदि आप जिस फ़ाइल का उपयोग करना चाहते है नीचे उसी के, सिस्टम से निकलेगा आपको यह त्रुटि.
php. ini फ़ाइल को संशोधित करना
यह नीति फ़ाइल में कॉंफ़िगर की गई है PHP.ini, लेकिन इसके अलावा, यह भी में सक्षम किया जा सकता है कॉन्फ़िगरेशन फ़ाइल के अपाचे. इस तरह, इस त्रुटि से निपटने के लिए पहले चरण के रूप में, तुम्हे अवश्य करना चाहिए पहुँच की कॉंफ़िगरेशन फ़ाइल के लिए PHP, प्रश्न में लाइन के लिए देखो और यह मार्ग या मार्गों की अनुमति के साथ संशोधित.
1 2 3 4 5 6 | //php.ini ... ... open_basedir = "/ruta/webs/miweb/www:/ruta/webs/miweb" ... ... |
इस पिछले उदाहरण में, PHP इतना कॉंफ़िगर किया गया है कि सभी के लिए प्रणाली का उपयोग कर सकते है उच्च स्तर से शुरू /मार्ग/जाले/miweb/www, सभी शीर्ष के रूप में /मार्ग/जाले/miweb, विभिंन फ़ोल्डरों और फ़ाइलों है कि खत्म हो रहे हैं, इस प्रकार की अनुमति के उपयोग की अनुमति.
एक बार संशोधित फाइल PHP.ini और रीबूट को वेब सर्वर, समस्याग्रस्त फ़ाइल में प्रवेश करने के लिए किया जा करने में सक्षम होना चाहिए और, इसलिए, में त्रुटि यह दूर जाना चाहिए.
Apache कॉंफ़िगरेशन फ़ाइल को संशोधित करना
हां फिर भी त्रुटि बनी रहती है, बहुत संभव है कि कॉन्फ़िगरेशन फ़ाइल के अपाचे यह निर्देश भी सक्षम है. ऐसा करने के लिए, फ़ाइल की स्थिति जानें, स्थापना के आधार पर आप कुछ मार्गों में होगा या अन्य, में आम तौर पर /आहद/apache2/ या से में लिंक /Home/अपने-प्रयोक्ता/conf/वेब/. फ़ाइल सामान्यतया का नाम है apache2. conf ओ sapache2. conf, के आधार पर कि क्या आप का उपयोग HTTPS या नहीं.
एक बार अंदर, प्रविष्टि को खोजता है <virtualhost> प्रश्न में अपने डोमेन के लिए, और टैग के भीतर <निर्देशिका> कुछ निंनलिखित की तरह दिखाई देना चाहिए:
1 2 3 4 5 6 7 | <Directory...> ... ... php_admin_value open_basedir /ruta/webs/miweb/www:/ruta/webs/miweb ... ... </Directory> |
यह वह स्थान है जहां आप इस निर्देश को कॉंफ़िगर कर रहे है. के रूप में सरल संशोधित करें ओ जोड़ें रूट या मार्ग है कि आप इस निर्देश है चाहता हूं, सहेजें परिवर्तन और सर्वर को पुनरारंभ करना. एक बार बनाया, को त्रुटि चली जाएगी.
इस तरह से आप तक पहुंच सकते है शामिल, है या यहां तक कि समारोह का उपयोग fopen हैं जो फ़ाइलों के लिए नीचे के रूट के अपने वेब साइट, इन मार्गों फ़ाइलों है कि एक निश्चित की आवश्यकता पर हो सकता है डिग्री सुरक्षा, और इस तरह से त्रुटि “open_basedir प्रतिबन्ध प्रभावशील” टिप्पणी, पूरा गायब.
