2010-05-21 19 views
7

मुझे अपने PHP एप्लिकेशन में फ़ाइल अपलोडिंग उपयोगिता के साथ समस्याएं आ रही हैं। फ़ॉर्म पर बड़ी फाइलें (9 एमबी +) भेजते समय, मुझे एक बहुत ही अजीब व्यवहार मिलता है: फ़ाइल जानकारी सहित, पोस्ट डेटा गायब हो गया है।बड़ी फ़ाइल अपलोड पर पोस्ट डेटा असुरक्षित

मैंने पहले से ही सभी PHP सीमाएं बढ़ा दी हैं (समय सीमा, अधिकतम इनपुट समय, पोस्ट अधिकतम आकार, स्मृति सीमा और अधिकतम फाइलसाइज अपलोड करें) और मुझे अभी भी उचित व्यवहार नहीं मिल रहा है। मैंने फ्लैश-आधारित समाधान (SWFUpload, www.swfupload.org) के साथ नियमित HTTP रूपों को बदलने की कोशिश की है, फिर भी वही व्यवहार।

मैंने समान आकार की कई फ़ाइलों को आजमाया है और यह निश्चित रूप से एक विशेष फ़ाइल समस्या नहीं है। मैंने फायरबग का उपयोग करके भेजे गए पोस्ट वर्र्स को डीबग किया है, और फाइल के साथ, हेडर में सही वैरिएबल अभी भी हैं।

यहां क्या हो सकता है?

+1

कैसे सर्वर लॉग में देख के बारे में। किसी भी त्रुटि/चेतावनियों को खोजने की कोशिश करें। – nc3b

+0

मैंने किया, कुछ भी नहीं कहता है। – DfKimera

+0

मुझे एक ही समस्या है। क्या आपने अपनी समस्या हल की? –

उत्तर

2

वेब सर्वर अनुरोध आकार को सीमित करने के लिए भी कॉन्फ़िगर किया जा सकता है। यदि आप अपाचे का उपयोग कर रहे हैं, तो LimitRequestBody निर्देश देखें।

+0

मैंने अपाचे कॉन्फ़िगरेशन पर एक नज़र डाली, LimitRequestBody निर्देश नहीं है, इसलिए मैं इसे डिफ़ॉल्ट मान (0, या कोई सीमा नहीं) – DfKimera

+0

मानता हूं यह समस्या थी। डब्ल्यूएचएम/सीपीनल सेटअप को छोड़कर मैंने उस समय सीमित रूप से LimitRequestBody निर्देश को वास्तव में बदलना मुश्किल बना दिया था। इस + post_max_size को बढ़ाने, अधिकतम आकार और मेमोरी सीमा अपलोड करने से समस्या हल होनी चाहिए। – DfKimera

+0

मैंने post_max_size, upload_max_size और मेमोरी सीमा को बदलने की कोशिश की है लेकिन अभी भी एक ही समस्या का सामना कर रहा है। –

1

1 - 2 एमबी की छोटी फ़ाइलों को अपलोड करने का प्रयास करें। अगर आप अभी भी कोड पोस्ट नहीं कर पा रहे हैं।

आशा है कि आपने फॉर्म परिभाषा में enctype = '/ multipart/form-data' जोड़ा है।

+0

मैंने किया, और छोटी फाइलें काम करती हैं। समस्या 8 एमबी + फाइलों पर दिखाई देती है। एनक्ट टाइप वहां है। – DfKimera

0

आप किस सर्वर पर चल रहे हैं? मुझे लगता है कि कुछ सर्वर ओएस की सीमित सीमा है कि वे कितनी बड़ी फाइलें अनुमति देते हैं। यह मान बदला जा सकता है।

1

ठीक है, मुझे लगता है कि मेरे पास समाधान है। आपको post_max_size निर्देश और $_SERVER['CONTENT_LENGTH'] दोनों की जांच करनी चाहिए, इसलिए यदि $ _SERVER ['CONTENT_LENGTH'] post_max_size से अधिक है तो इसका अर्थ है कि वे बहुत अधिक डेटा अपलोड करने का प्रयास कर रहे हैं।

$POST_MAX_SIZE = ini_get('post_max_size'); 
$mul = substr($POST_MAX_SIZE, -1); 
$mul = ($mul == 'M' ? 1048576 : ($mul == 'K' ? 1024 : ($mul == 'G' ? 1073741824 : 1))); 
if($_SERVER['CONTENT_LENGTH'] > $mul*(int)$POST_MAX_SIZE && $POST_MAX_SIZE) 
{ 
    $error = true; 
} 

समाधान यहाँ से लिया: http://www.php.net/manual/en/features.file-upload.php#73762

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