2010-09-04 14 views
7
rename('/images/old_name.jpg', '/images/new_name.jpg'); 

यह कोड फ़ाइल नहीं मिला है।PHP रूट फ़ोल्डर

स्क्रिप्ट, जहां फाइलें कहा जाता है /source/ फ़ोल्डर के अंदर रखा जाता है।

फ़ाइलें http://site.com/images/old_name.jpg

से खोला जा सकता है कैसे जड़ से इन फ़ाइलों को प्राप्त करने के लिए?

+0

[यह पूछे जाने वाले प्रश्न प्रश्न] (http://stackoverflow.com/questions/3633753/anybody-knows-a- अच्छी-आलेख-ऑन-फाइल सिस्टम-मूलभूत) वास्तव में एक अच्छे उत्तर की आवश्यकता है –

+1

यहां तक ​​कि जब आप इसे सही करते हैं, तो फ़ाइल को थोड़ा बड़ा होने पर भाग फ़ोल्डर में दिखाई देने में कुछ मिनट लग सकते हैं। – jaisonDavis

उत्तर

29

rename एक फाइल सिस्टम फ़ंक्शन है और फाइल सिस्टम पथ की आवश्यकता है। लेकिन ऐसा लगता है कि आप यूआरआई पथ का उपयोग कर रहे हैं।

आप $_SERVER['DOCUMENT_ROOT'] उपयोग कर सकते हैं दस्तावेज़ जड़ के लिए पथ पहले जोड़ें करने के लिए:

rename($_SERVER['DOCUMENT_ROOT'].'/images/old_name.jpg', $_SERVER['DOCUMENT_ROOT'].'/images/new_name.jpg'); 

या अधिक लचीलेपन के लिए, वर्तमान फ़ाइल __FILE__ के रास्ते पर dirname का उपयोग करें:

rename(dirname(__FILE__).'/images/old_name.jpg', dirname(__FILE__).'/images/new_name.jpg'); 

या रिश्तेदार का उपयोग पथ। आप /लिपि फ़ोल्डर में कर रहे हैं के रूप में, .. एक निर्देशिका स्तर ऊपर चलता है:

rename('../images/old_name.jpg', '../images/new_name.jpg'); 
+0

नाम बदलने के बजाय ('../ images/old_name.jpg', [...] मैं नाम का उपयोग करूंगा (dirname (dirname (\ _ \ _ FILE \ _ \ _))। '/ Images/old_name.jpg', [...] इस तरह यह मौजूदा फ़ाइल (नाम बदलने के लिए कॉल वाला एक) के सापेक्ष होगा, न कि चल रहे स्क्रिप्ट पर, अगर नाम बदलने के लिए कॉल एक फ़ाइल में है तो अलग-अलग हो सकता है। –

+0

@ सेबेस्टियन ग्रिग्नोली: हां , यह एक और अच्छा विकल्प है। – Gumbo

6

PHP में रूट (/) फाइल सिस्टम नहीं "webroot" की जड़ है। php-फ़ाइल /source/ निर्देशिका में है और छवियों /source/images/ में कर रहे हैं तो यह काम करेगा:

rename('images/old_name.jpg', 'images/new_name.jpg'); 
संबंधित मुद्दे