POST सामग्री-लंबाई सीमा से अधिक है


94

जब मुझे उपयोगकर्ता अपनी फाइलें अपलोड कर रहे हैं, तो मुझे php में मेरे error_log में समान त्रुटियां मिलती हैं

PHP चेतावनी: 11933650 बाइट्स की POST सामग्री-लंबाई लाइन में अज्ञात में 8388608 बाइट्स की सीमा से अधिक है

मेरी php.ini में (public_html में custom ini फ़ाइल बनाई गई) क्या इस समस्या को हल करेगी, मुझे इसे लगभग 1GB पर सेट करना होगा? मैं अपनी सेटिंग्स को php.ini में बदलने जा रहा हूं, क्या यह समस्या को हल करेगा?

upload_max_filesize = 1000M ;1GB
post_max_size = 1000M

मैं 'मैमोरी_लिमिट' की सीमा क्या तय करूंगा।

फ़ाइल अपलोड आकार की जांच करने के लिए यह मेरी स्क्रिप्ट में सही होगा <1GB

if($_FILES["uploadedfile"]["size"]<1000000)

5
क्या आप वाकई सही php.ini का संपादन कर रहे हैं?
पेका

क्या आप सही php.ini का संपादन कर रहे हैं (कई हैं)? क्या सेटिंग्स को रीसेट करना कुछ और है? (जैसे कोई भी कॉल php_ini_set।)
पिस्कॉर ने

मैंने public_html में एक कस्टम php.ini फ़ाइल बनाई
daza166

@daza: आप कहीं भी php.ini को नहीं छोड़ सकते हैं। आप केवल कुछ स्थानों की जाँच कर सकते हैं। और "वर्तमान निर्देशिका" उनमें से एक नहीं है। आप किसी विशेष निर्देशिका में सेट करने के लिए अपने httpd.conf और / या .htaccess फ़ाइल में 'php_value' निर्देशों का उपयोग कर सकते हैं। लेकिन अन्यथा आपको इसे मुख्य .ini फ़ाइल में बदलना होगा। php_info()यह देखने के लिए उपयोग करें कि आपकी "स्थानीय" सेटिंग क्या है, और किन .ini फ़ाइलों का उपयोग किया जा रहा है।
मार्क बी

1
एक info.php <?php phpinfo(); ?>इसे public_html पर कॉपी करके अपने ब्राउज़र में कॉल करें। इसके बाद जांच लें कि अपलोड_मैक्स_फाइलिज़ का सही मूल्य है या नहीं।
डैनियल

जवाबों:


96

8388608 बाइट्स 8M है, PHP में डिफ़ॉल्ट सीमा। Php.ini के लिए उन परिवर्तनों को वास्तव में समस्या को हल करना चाहिए (उन्हें बनाने के बाद अपने अपाचे सर्वर को फिर से शुरू करना सुनिश्चित करें)।

मेमोरी सीमा को यहां बदलने की आवश्यकता नहीं है।


.Ini फ़ाइल में परिवर्तन करने के बाद सुनिश्चित करें कि आप अपने सर्वर को पुनः आरंभ करें।
संधू

यदि आप nginx + php fpm का उपयोग कर रहे हैं, तो php डेमॉन को पुनः आरंभ करना सुनिश्चित करें sudo service php5-fpm restart
Gourneau

पुनरारंभ यह मेरे लिए किया था। +1 धन्यवाद;)
रिफिलॉन

1
मुझे बस यहाँ मेरे अनुभव पोस्ट करने दें, पुनः आरंभ करने के लिए मुझे एक दे दी है stop: Unknown instance:, यह सिर्फ एक नया PHP5-एफ पी एम उदाहरण बनाकर किया गया था लेकिन मेरे वेबसर्वर अभी भी पुराने एक का उपयोग किया गया था, मैं तो करना ही था sudo killall -KILL php5-fpmतोsudo service php5-fpm start
खानदानी क

अपलोड को संभालने वाली PHP प्रक्रिया में और क्या किया जा रहा है, इसके आधार पर memory_limit, वांछित अधिकतम अपलोड आकार से बड़ी राशि तक बढ़ाना आवश्यक हो सकता है ।
क्रेग फिंच

45

मेरा सुझाव है कि आपको फ़ाइल post_max_sizeमें 8M से 32M तक बदलना चाहिए php.ini


39

आप बस php.ini पर सेटिंग कर रहे हैं

फिर सेट करें:

upload_max_filesize = 1000M;
post_max_size = 1000M;

फिर अपने xampp को पुनरारंभ करें .. छवि की जांच करें


17

इसे .htaccess को चिपकाने की कोशिश करें और इसे काम करना चाहिए।

php_value post_max_size 2000M
php_value upload_max_filesize 2500M
php_value max_execution_time 6000000
php_value max_input_time 6000000
php_value memory_limit 2500M

10

post_max_size की तुलना में थोड़ा बड़ा होना चाहिए upload_max_filesize , जब अपलोड करने HTTP POST विधि का उपयोग कर पाठ भी फ़ाइल आकार और नाम, आदि के साथ हेडर है क्योंकि

यदि आप 1GiB फ़ाइलों को सफलतापूर्वक अपडेट करना चाहते हैं, तो आपको सेट करना होगा:

upload_max_filesize = 1024M
post_max_size = 1025M

ध्यान दें, GB के लिए सही प्रत्यय G है, यानी upload_max_filesize = 1G।

Memory_limit सेट करने की आवश्यकता नहीं है ।


6

कुछ मामलों में, आपको अधिकतम निष्पादन समय बढ़ाने की आवश्यकता है।

max_execution_time=30

मैने कर दिखाया

max_execution_time=600000

तब मैं खुश था।


7
अक्सर आप php.ini में ऐसा नहीं करना चाहते हैं क्योंकि यह सभी php प्रक्रियाओं को उस समय के लिए चलाने की अनुमति देगा। आप इसे एक सिंगल फाइल में set_time_limit () के साथ सेट कर सकते हैं। उदा।
Set_time_limit

5

केवल एक से अधिक php.ini फ़ाइल हो सकती है । उदाहरण के लिए, WAMP का उपयोग करते समय निम्नलिखित निर्देशिकाओं में 2 php.ini फाइलें हैं:

  • C:\wamp\bin\apache\apache2.4.9\bin
  • C:\wamp\bin\php\php5.5.12

आपको पहले एक को संपादित करने की आवश्यकता है।


4

मैं असहमत हूं, लेकिन php.ini या .htaccess में फ़ाइल का आकार बढ़ाने के लिए यह समाधान काम नहीं करेगा, यदि उपयोगकर्ता सर्वर एप्लिकेशन में अनुमति से बड़ी फ़ाइल भेजता है। मैं सुझाव देता हूं कि इसे दृश्यपटल पर मान्य किया जाए। उदाहरण:

$(document).ready(function() {
    $ ('#your_input_file_id').bind('change', function() {
        var fileSize = this.files[0].size/1024/1024;
        if (fileSize > 2) { // 2M
            alert('Your custom message for max file size exceeded');
            $('#your_input_file_id').val('');
        }
    });
});


2
किस बात से असहमत?
रोब

1
क्लाइंट पक्ष को मान्य करना ठीक है, लेकिन यह सुरक्षा के लिए कुछ भी नहीं करता है, केवल उपयोगकर्ता को तत्काल चेतावनी देने के लिए यदि वे एक बड़ी फ़ाइल अपलोड कर रहे हैं। यहां संपूर्ण उद्देश्य उपयोगकर्ताओं को बड़ी फ़ाइल अपलोड करने से रोकना नहीं है, यह उन्हें बड़ी फ़ाइल अपलोड करने की अनुमति देता है।
अल्टिमस प्राइम जूल

1
क्या इसका कोई सर्वर साइड समाधान / जांच नहीं है? मैं आसानी से एक जेएस चेक को बायपास कर सकता हूं।
एकिनुरी

Nvm, यह समझ से बाहर:if ($_SERVER["CONTENT_LENGTH"] > (int)(str_replace("M", "", ini_get("post_max_size")) * 1024 * 1024)) { // do w/e
akinuri

2

यदि आप Wamp का उपयोग करके विंडोज़ में Php 5.6.X संस्करण का उपयोग कर रहे हैं, तो फ़ाइल स्थान में हो सकता है,

C:\Windows\php.ini

बस के साथ प्रयास करें

post_max_size = 100M;

अपाचे एक में बदलाव करने की कोशिश करें। उसके द्वारा आपकी Wamp / XAMP लोड .ini फ़ाइल

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.