2012-06-08 14 views
11

मैं PHP को एक अपलोड फ़ाइल को tmp निर्देशिका से अपने वेबसर्वर पर कहीं भी स्थायी स्थानांतरित करने की कोशिश कर रहा हूं। यह काफी सरल लगता है, लेकिन मैं इस त्रुटि हो रही है: सहीPHP: move_uploaded_file() स्ट्रीम खोलने में विफल रहा: ऐसी कोई फ़ाइल या निर्देशिका

Unable to move 'C:\UniServer\tmp\php3F62.tmp' to 'static/images/slides/1/1.jpg'

सुंदर सीधी-सपाट,? यह गंतव्य फ़ोल्डर नहीं मिल रहा है।

मेरा प्रश्न है: मैं वांछित लक्ष्य निर्देशिका का संदर्भ कैसे करूं?

क्या सर्वर पर स्क्रिप्ट की स्थिति के सापेक्ष संदर्भ है? या यह यूआरएल के सापेक्ष है? या PHP DOCUMENT_ROOT? या ओएस फाइल सिस्टम? या कुछ और?

मैं PHP दस्तावेज में या वास्तव में इतने पर यहां इसी तरह के सवाल में से किसी में उत्तर नहीं मिलता है ..

किसी को भी मदद कर सकते हैं? धन्यवाद।

+0

यह सर्वर पर स्क्रिप्ट की स्थिति है। –

+2

पर एक पूर्ण पथ का सबसे अच्छा उपयोग करें, इसे प्लेटफ़ॉर्म को स्वतंत्र बनाने के लिए पथों पर 'DIRECTORY_SEPARATOR' निरंतर उपयोग करें। –

+0

अक्सर एक बार इस त्रुटि में चलता है, और इसे तुरंत समस्या निवारण के लिए, इन चरणों का पालन करें: https://stackoverflow.com/a/36577021/2873507 –

उत्तर

26

पथ का ट्रैक रखने के लिए एक आसान तरीका सिर्फ अपने index.php में निरपेक्ष पथ को परिभाषित करने के लिए है

define ('SITE_ROOT', realpath(dirname(__FILE__))); 

तो बस इसे पसंद का उपयोग करें:

move_uploaded_file($_FILES['file']['tmp_name'], SITE_ROOT.'/static/images/slides/1/1.jpg'); 
+0

इस तरह मैं इसे भी करता हूं। यह दस्तावेज़ रूट का उपयोग करने से बेहतर है क्योंकि इस तरह, आप अपने ऐप को उप-डीआईआर –

+0

में प्राप्त कर सकते हैं यह सही समाधान है, धन्यवाद!(यह चिंताजनक है कि कई लोगों ने सोचा कि DIRECTORY_SEPARATOR मदद करेगा, हालांकि: -/0) –

+0

मैंने कभी इसका उपयोग नहीं किया है, आईडी केवल तभी उपयोग करें जब मैं उपयोगकर्ता के पथ को आउटपुट करने जा रहा था। स्वीकृति के लिए धन्यवाद :) –

0

यह सर्वर पर लिपि की स्थिति से है! और इसके अलावा, आप इस फ़ोल्डर में लिखने की अनुमति की जरूरत है:

'C:\UniServer\***\static\images\slides\1\1.jpg 

एक निरपेक्ष पथ का उपयोग करें:

'static/images/slides/1/1.jpg' 

इसके बजाय यह एक निरपेक्ष पथ इस तरह से उपयोग करने के लिए बेहतर है।

+2

PHP सभी ओएस में वैध पथ विभाजक दोनों के रूप में \ और/स्वीकार करता है। –

+0

@DjangoReinhardt जानकारी के लिए धन्यवाद, लेकिन ओएस को जानकर, अतिरिक्त सावधान रहना। :) –

+0

डाउनवोट का कारण क्या है? –

2

मैं एक ही समस्या थी मेरे अपलोड के साथ। मेरा उदाहरण देखें और शायद यह आपकी मदद कर सकता है।

मेरे द्वारा बनाई गई फ़ाइल को "अपलोड" नाम दिया गया है।

$uploads_dir = 'uploads/'; 
$name = $_FILES['userfile']['name']; 
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) 
{  
    //in case you want to move the file in uploads directory 
    move_uploaded_file($_FILES['userfile']['tmp_name'], $uploads_dir.$name); 
    echo 'moved file to destination directory'; 
    exit; 
} 
0
$destination = dirname(dirname(dirname(dirname(__FILE__))))."/runtime/tmp/"; 
chown($destination, 0755); 
move_uploaded_file($info['tmp_name'], $destination.$info['name']); 

यह मेरा समाधान है, मैं सिर्फ मेरी तस्वीर जो मैं ले जाना चाहते हैं डाल करने के लिए एक निर्देशिका बनाने के लिए mkdir का उपयोग करें। इच्छा है कि यह मदद करता है।

संबंधित मुद्दे