अनुमति मैं एक पृष्ठ पर is_dir
करने के लिए कुछ कॉल नहीं है। उन्होंने हमेशा कोई समस्या नहीं बनाई है।पीएचपी: open_basedir पथ
कुछ दिन पहले, होस्टिंग कंपनी 5.2 से 5.3 के लिए पीएचपी उन्नत बनाया। तब से, is_dir
करने के लिए अपने सभी कॉल्स निम्न त्रुटि (संदेश) के परिणामस्वरूप:
Warning: is_dir(): open_basedir restriction in effect.
File(/home/virtual/domain.com/public_html/galleries/img/002.JPG/)
is not within the allowed path(s):
(/home/virtual/domain.com:/home/virtual/_tmp)
in /home/virtual/domain.com/public_html/index.php on line 201
यह पहेली मुझे।
जाहिर है, (ताकि उपनिर्देशिकाएं कोई स्लैश के साथ,) त्रुटि संदेश (और php_info
रूप में अच्छी तरह), निर्देशिका /home/virtual/domain.com
शामिल किया गया है/open_basedir
में सक्षम है, और फ़ाइलों को is_dir
के अनुसार के माध्यम से पुनरावृति सब कर रहे हैं करने के लिए कोशिश कर रहा है उस फ़ोल्डर के नीचे subfolders में स्थित है। तो वे अनुमति पथ के भीतर क्यों नहीं हैं? स्पष्ट रूप से वे हैं!
अजीब पर्याप्त, यह त्रुटि प्रकट होता है के लिए एक ही करते समय दिखाई देते is_dir
रिटर्न झूठी, जैसे कि, जब फ़ाइल नहीं एक फ़ोल्डर है, लेकिन एक नियमित रूप से फ़ाइल है। ऐसा लगता है कि त्रुटियों को फेंकने के बिना सभी निर्देशिकाओं के माध्यम से फिर से शुरू होता है।
इसी प्रकार के सवाल पहले से यहां पोस्ट: Open_basedir restriction oddness (कोई समाधान नहीं मिला)।
किसी के पास कोई विचार है?
(नोट: पीएचपी सेटिंग बदलने से एक विकल्प के रूप में इसे एक साझा मेजबान है और मैं किसी भी व्यवस्थापक पहुँच नहीं है नहीं है)
इस वास्तविक त्रुटि संदेश है करता है? या कुछ पथ में कुछ विशेष पात्र हैं? – SteAp
कुछ पथों में कुछ विशेष वर्ण होते हैं: '&' (एम्परसैंड) और '_' (अंडरस्कोर)। लेकिन त्रुटि उन पथों के लिए भी प्रकट होती है जिनमें कोई विशेष वर्ण नहीं होता है (जब तक कि अपरकेस अक्षर विशेष वर्णों के रूप में न हों)। और विशेष वर्ण सभी निर्देशिका नामों में हैं (और सही ढंग से पार्स किए गए हैं और उन मामलों में पुनरावृत्त हैं जहां 'is_dir'' TRUE' का मूल्यांकन करता है), फ़ाइल नामों में कभी नहीं (जहां त्रुटि होती है)। –