PHP 2 MB से बड़ी फ़ाइल अपलोड क्यों नहीं करने देता?
\nक्या आपने कभी वेबसाइट पर अच्छी क्वालिटी की फोटो, प्रेजेंटेशन या वीडियो अपलोड करने की कोशिश की और PHP ने सूखेपन से जवाब दिया: «The uploaded file exceeds the upload_max_filesize directive in php.ini»? परिचित लगता है? यह एक क्लासिक समस्या है जो हर दूसरे प्रोजेक्ट में आती है। Stack Overflow पर «Change the maximum upload file size» प्रश्न को दसियों हज़ार बार देखा गया है - और यह कोई संयोग नहीं है।
\nइस लेख में, हम समझेंगे कि PHP में फ़ाइल अपलोड पर प्रतिबंध कैसे काम करता है, इसे कहाँ सेट किया जाता है और सीमा को सही तरीके से कैसे बढ़ाया जाए। आप न केवल upload_max_filesize के बारे में जानेंगे, बल्कि उन छिपी समस्याओं के बारे में भी जानेंगे जो आपके सभी प्रयासों को बेकार कर सकती हैं।
PHP फ़ाइल अपलोड को कैसे प्रतिबंधित करता है?
\nजब आप फॉर्म के माध्यम से फ़ाइल भेजते हैं, तो PHP कई स्तरों पर उसके आकार की जाँच करता है। यदि उनमें से कोई भी फ़ाइल को पास नहीं करता है, तो फ़ाइल अपलोड नहीं होगी। आइए तीन मुख्य पैरामीटर समझते हैं जिन्हें बदलना आवश्यक है ताकि change the maximum upload file size सही ढंग से काम करे।
\n\n1. upload_max_filesize - फ़ाइल पर सीधी सीमा
\nयह सबसे स्पष्ट पैरामीटर है। यह एक अपलोड की जाने वाली फ़ाइल का अधिकतम आकार निर्धारित करता है। PHP में डिफ़ॉल्ट रूप से 2M (2 मेगाबाइट) सेट होता है। इसे बढ़ाने के लिए, उदाहरण के लिए 100 MB तक, लिखें:
upload_max_filesize = 100M\n\n2. post_max_size - पूरे POST अनुरोध का आकार
\nयहाँ कई लोग फँस जाते हैं। भले ही आपने upload_max_filesize बढ़ा दिया हो, लेकिन post_max_size के बारे में भूल गए, तो अपलोड फिर भी काम नहीं करेगा। क्यों? क्योंकि फ़ाइल POST अनुरोध के अंदर भेजी जाती है, और यदि पूरे अनुरोध का आकार सीमा से अधिक है - तो PHP इसे बस काट देगा।
नियम सरल है: post_max_size, upload_max_filesize से बड़ा होना चाहिए। आमतौर पर इसे 20-30% अधिक रखा जाता है। उदाहरण:
post_max_size = 120M\n\n3. max_execution_time - अपलोड करने का समय
\nबड़ी फ़ाइलें तुरंत अपलोड नहीं होतीं। यदि फ़ाइल 100 MB की है और इंटरनेट धीमा है, तो स्क्रिप्ट निर्धारित समय में काम पूरा नहीं कर पाएगी। डिफ़ॉल्ट रूप से max_execution_time = 30 सेकंड है। बड़ी फ़ाइलों के लिए इसे 300-600 सेकंड तक बढ़ाएँ:
max_execution_time = 600\n\n4. memory_limit - प्रोसेसिंग के लिए मेमोरी
\nकुछ PHP स्क्रिप्ट प्रोसेसिंग से पहले फ़ाइल को मेमोरी में लोड करती हैं। यदि memory_limit फ़ाइल के आकार से छोटा है - तो आपको एक त्रुटि मिलेगी। इसे post_max_size से बड़ा रखने की सलाह दी जाती है:
memory_limit = 256M\n\nसेटिंग्स कहाँ और कैसे बदलें?
\nअब जब हम जानते हैं कि change the maximum upload file size के लिए कौन से पैरामीटर जिम्मेदार हैं, तो आइए समझते हैं कि उन्हें कहाँ बदलना है। आपके पास तीन मुख्य तरीके हैं:
\n\nतरीका 1: php.ini (मुख्य कॉन्फ़िगरेशन फ़ाइल)
\nयह सबसे विश्वसनीय तरीका है। सर्वर पर php.ini फ़ाइल ढूँढें (आमतौर पर यह /etc/php/ या /usr/local/etc/ में होती है)। इसे खोलें और आवश्यक डायरेक्टिव ढूँढें। यदि वे नहीं हैं - तो फ़ाइल के अंत में जोड़ें:
; फ़ाइल अपलोड की अनुमति दें (On होना चाहिए)\nfile_uploads = On\n\n; एक फ़ाइल का अधिकतम आकार\nupload_max_filesize = 100M\n\n; POST अनुरोध का अधिकतम आकार\npost_max_size = 120M\n\n; स्क्रिप्ट निष्पादन समय\nmax_execution_time = 600\n\n; मेमोरी सीमा\nmemory_limit = 256M\nबदलावों के बाद वेब सर्वर को पुनरारंभ करना न भूलें:
\nsudo service apache2 restart # Apache के लिए\nsudo service nginx restart # Nginx के लिए\n\nतरीका 2: .htaccess (केवल Apache के लिए)
\nयदि आपके पास php.ini तक पहुँच नहीं है (उदाहरण के लिए, होस्टिंग पर), तो आप साइट की रूट डायरेक्टरी में .htaccess के माध्यम से प्रयास कर सकते हैं:
php_value upload_max_filesize 100M\nphp_value post_max_size 120M\nphp_value max_execution_time 600\nphp_value memory_limit 256M\nमहत्वपूर्ण: यह तरीका केवल