2012-07-06 10 views
5

मैंने हाल ही में हमारे सर्वरों में से एक पर एक PHP डाउनलोड पोर्टल स्थापित किया है। सब ठीक काम कर रहा है, लेकिन उपयोगकर्ता बड़ी फाइलें अपलोड नहीं कर सकते (~ 20 एमबी)।मैं बड़े अपाचे/PHP फ़ाइल अपलोड को विफल होने से कैसे रोक सकता हूं?

memory_limit 
upload_max_filesize 
post_max_size 
memory_limit 

पूर्ण php.ini यहाँ:

मैं निम्नलिखित सेटिंग्स करने के लिए बहुत बड़ी मूल्यों या असीमित सेट http://pastebin.com/NrqJvMVM

लेकिन यह अभी भी सर्वर पुनरारंभ करने के बाद विफल रहता है।

क्या मुझे कोई सेटिंग याद आ रही है? क्या मुझे अपाचे कॉन्फ़िगरेशन में कोई मान अपडेट करना है? क्या किसी कंपनी फ़ायरवॉल किसी भी तरह से हस्तक्षेप कर सकता है?

संपादित करें: मैंने phpinfo() की जांच की है और मास्टर कॉन्फ़िगरेशन अभी भी पुराने मान दिखाता है। कॉन्फ़िगरेशन फ़ाइल C: \ Windows \ php.ini हालांकि, नए मान हैं। क्या मैं गलत कॉन्फ़िगरेशन फ़ाइल का उपयोग कर रहा हूं।

उत्तर

14

आप एक स्क्रिप्ट में पैरामीटर, भी परीक्षण कर सकते हैं। शायद यह मदद करता है:

  1. max_execution_time = ini_set ("max_execution_time", "-1");
  2. post_max_size = ini_set ("post_max_size", "200M");
  3. memory_limit = ini_set ("memory_limit", "200M");
  4. upload_max_filesize = ini_set ("upload_max_filesize", "200M");

.htaccess में:

php_value upload_max_filesize 200M

php_value memory_limit 256M

php_value max_execution_time 18000

यहाँ इस विषय के बारे में अच्छा लेख हैं: http://www.cyberciti.biz/faq/linux-unix-apache-increase-php-upload-limit/ | https://www.dokuwiki.org/faq:uploadsize

क्या सुहोसिन आपके सर्वर पर स्थापित है या आप fcgi ;-) का उपयोग करते हैं?

+0

मैं सुहोशिन या एफसीजीआई का उपयोग नहीं करता हूं। मैंने .htaccess में मान जोड़ने की कोशिश की, लेकिन फ़ाइल अपलोड अभी भी काम नहीं करता है। मुझे अब एक त्रुटि संदेश नहीं मिला है, लेकिन फ़ाइल सर्वर पर कभी नहीं दिखाई देती है। – xsl

+0

मैंने सवाल संपादित किया, शायद अतिरिक्त जानकारी आपकी मदद करेगी। – xsl

+0

अब यह काम कर रहा है। कुछ कारणों से php विंडोज निर्देशिका में कॉन्फ़िगरेशन फ़ाइल नहीं पढ़ सका। – xsl

2

आपने post_max_size वैरिएबल को दो बार लिखा है और 0 के पहले मूल्य और दूसरे का मान 99 99 एम है, पहले को हटाएं और इसे आजमाएं।

+0

कोशिश की, लेकिन इससे मदद नहीं मिली। – xsl

+0

आपने इन चरों के मूल्य को इतना बढ़ाया क्यों है, बस उन्हें अपनी आवश्यकताओं के अनुसार सेट करें, उससे अधिक नहीं। –

+0

एकमात्र मूल्य जो वास्तव में विशाल है फ़ाइल अपलोड आकार (99 99 एमबी) है। मुझे असीमित अपलोड आकार की आवश्यकता है, लेकिन 99 99 एमबी पर्याप्त है। – xsl

3

शायद, this आलेख आपकी मदद कर सकता है। आप जोड़ सकते हैं पैरामीटर .htaccess को

+0

धन्यवाद, लेकिन मुझे विश्वास है मेरे पास ये सभी सेटिंग्स सेट हैं। – xsl

+0

जब मैं विशाल अपलोड पर काम कर रहा था, मुझे यह एप्लेट http://jumploader.com/ मिला जो PHP का भी उपयोग कर सकता है। शायद यह आपके प्रोजेक्ट के लिए अच्छा हो सकता है। – Kerberos

1

शायद MAX_FILE_SIZE ठीक से सेट नहीं है ...

<form enctype="multipart/form-data" action="index.php" method="post"> 
<input type="hidden" name="MAX_FILE_SIZE" value="50000" /> 
<input name="filedata" type="file" /> 
<input type="submit" value="Send file" /> 
</form> 
+0

डाउनलोड पोर्टल अन्य सर्वरों पर काम कर रहा है, इसलिए मुझे लगता है कि समस्या कोड के कारण नहीं है। – xsl

1

आप सही php.ini फ़ाइल खोजना चाहिए =)

2

मैं गलत कॉन्फ़िग फ़ाइल उपयोग कर रहा हूँ।

ठीक है, phpinfo() आपको बताता है कि आप किस का उपयोग कर रहे हैं। आउटपुट के शीर्ष के पास Configuration File (php.ini) Path और Loaded Configuration File देखें।

6

आपकी स्थापना के लिए सभी कॉन्फ़िगरेशन सेटिंग्स php.ini फ़ाइल में निहित हैं। कभी-कभी इन सेटिंग्स को apache में निर्देशों से ओवरराइड किया जा सकता है। Htaccess फ़ाइलें या यहां तक ​​कि स्क्रिप्ट में भी।

निम्न सेटिंग्स है कि हम संशोधित करने की आवश्यकता -

  • file_uploads
  • upload_max_filesize
  • max_input_time
  • memory_limit
  • max_execution_time
  • post_max_size

नीचे विस्तार से विन्यास सेटिंग्स।

  • upload_max_filesize और post_max_size

    फ़ाइलें आमतौर पर 'बहुखण्डीय/फार्म-डेटा' के नाम से एक प्रारूप में वेब सर्वर पर पोस्ट कर रहे हैं। Post_max_size उस डेटा की मात्रा पर ऊपरी सीमा सेट करता है जिसे एक स्क्रिप्ट इस तरीके से स्वीकार कर सकती है। आदर्श रूप से यह मान उस अपलोड से बड़ा होना चाहिए जिसे आपने upload_max_filesize के लिए सेट किया है।

    यह जानना महत्वपूर्ण है कि upload_max_filesize आपके द्वारा अपलोड की जा रही सभी फ़ाइलों के आकार का योग है। post_max_size upload_max_filesize प्लस फॉर्म के सभी अन्य फ़ील्ड की लम्बाई के साथ-साथ एन्कोडर में शामिल किसी भी माइम हेडर का योग भी शामिल है। चूंकि ये फ़ील्ड आमतौर पर छोटे होते हैं, इसलिए आप पोस्ट अधिकतम आकार के अधिकतम आकार को अधिकतम आकार का अनुमान लगा सकते हैं।

    PHP दस्तावेज़ के अनुसार आप ब्राउज़र के लिए सीमा निर्धारित करने के लिए अपने HTML फॉर्म में MAX_UPLOAD_LIMIT सेट कर सकते हैं।

  • memory_limit

    जब PHP इंजन एक इनकमिंग पोस्ट यह स्मृति में आने वाले डेटा के कुछ रखने की जरूरत से निपटने है। इस निर्देश का कोई प्रभाव केवल तभी होता है जब आपने कॉन्फ़िगरेशन समय पर --enable-memory-limit विकल्प का उपयोग किया हो। बहुत अधिक मूल्य निर्धारित करना बहुत खतरनाक हो सकता है क्योंकि यदि कई अपलोडों को एक साथ संभाला जा रहा है तो सभी उपलब्ध स्मृति का उपयोग किया जाएगा और अन्य असंबंधित स्क्रिप्ट्स जो बहुत सारी मेमोरी का उपभोग करती हैं, पूरे सर्वर को भी प्रभावित कर सकती हैं।

  • max_execution_time और max_input_time

    ये सेटिंग्स स्क्रिप्ट की अधिकतम जीवन समय और समय है कि स्क्रिप्ट इनपुट को स्वीकार करने में खर्च करना चाहिए परिभाषित करते हैं। यदि डेटा के कई मेगा बाइट्स को स्थानांतरित किया जा रहा है max_input_time उचित रूप से उच्च होना चाहिए। आप अपनी स्क्रिप्ट में set_time_limit() फ़ंक्शन को कॉल करके max_input_time के लिए ini फ़ाइल में सेटिंग ओवरराइड कर सकते हैं।

Additonal टिप्पणियाँ

  • अपाचे सेटिंग

    Apache वेबसर्वर एक LimitRequestBody विन्यास निर्देश है कि सभी पोस्ट डेटा का आकार उपयोग में वेब पटकथा भाषा की परवाह किए बिना प्रतिबंधित करता है। कुछ आरपीएम इंस्टॉलेशन सीमा अनुरोध निकाय को 512 केबी तक सेट करते हैं। आपको इसे एक बड़े मूल्य में बदलने या प्रविष्टि को पूरी तरह से हटाने की आवश्यकता होगी।

  • अन्य विकल्प

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

यह भी देखें:

  1. Upload large File upto 100MB using php
  2. upload large files using php, apache
  3. PHP: Uploading large files fail
+0

आपके अंतर्दृष्टिपूर्ण उत्तरों के लिए धन्यवाद, मुझे आशा है कि यह उन अवशेषों को प्राप्त करे जो इसके लायक हैं। दुर्भाग्यवश मैंने कुछ दिन पहले ही समस्या हल कर दी है और एक ऐसा उत्तर स्वीकार कर लिया जिसने मुझे ऐसा करने में मदद की। – xsl

+0

कोई समस्या नहीं है। मैंने पूरी तरह उत्तर दिया है क्योंकि वर्तमान उत्तर अधिक जानकारी नहीं दे रहे थे। –

1

मैंने पहले भी अपनी स्थिति में रहे हैं और सबसे अच्छा समाधान मैंने पाया तृतीय पक्ष उपयोग कर रहा था लाइब्रेरी को क्लाइंट साइड पर फ़ाइलों में विभाजित करने के लिए और इसे सब कुछ वापस मिलाएं सर्वर पर आर। मुझे यह मिला: http://www.plupload.com/

बहुत आसान और प्रभावी। यह विभिन्न तकनीकों के साथ काम करता है ताकि यह व्यापक रूप से ग्राहकों की मशीनों पर काम कर सके। (फ्लैश, सिल्वरलाइट, एचटीएमएल 5 फाइल एपीआई एएसओ ...) चीयर्स!

+0

इस + पूर्ण कोड डाउनलोड को संभालने का शानदार उदाहरण: http://webdev-blog.com/ajax-upload-script-with-custom-folders/ – m1crdy

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

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