PHP घातक त्रुटि को हल करने के लिए कैसे: 8388608 बाइट्स की अनुमत स्मृति आकार समाप्त हो गया

PHP कोडर द्वारा सामना की जाने वाली सबसे आम और निराशाजनक त्रुटियों में से एक यह पढ़ता है: "घातक त्रुटि: 8388608 बाइट्स की अनुमोदित मेमोरी आकार समाप्त हो गई है ..." लाइन पर /home/www/file.module में कुछ "(XXXX बाइट आवंटित करने का प्रयास किया गया) 12. "यह घातक PHP त्रुटि फसल है क्योंकि, डिफ़ॉल्ट रूप से, किसी भी लिपि के लिए PHP में 8 एमबी की स्मृति उपयोग सीमा है। यह वास्तव में एक अच्छी बात है, क्योंकि आप एक नकली PHP स्क्रिप्ट नहीं चाहते हैं ताकि सभी मेमोरी को घुमाकर अपने सर्वर को नीचे लाया जा सके। लेकिन कभी-कभी, आपके पास एक PHP स्क्रिप्ट होगी जो आम तौर पर 8 एमबी सीमा से अधिक हो जाती है ( कहें, आयात या अपलोड करने के लिए )। "घातक त्रुटि: 8388608 बाइट्स के अनुमोदित मेमोरी आकार को समाप्त करने के लिए ..." त्रुटि संदेश, बस इस स्क्रिप्ट को अपनी स्क्रिप्ट में शीर्ष पर डालें:

ini_set ("memory_limit", " 16M ");

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

वैकल्पिक रूप से, आप अपनी php.ini फ़ाइल को मेमोरी सीमा तक बदल सकते हैं। यह आपके सर्वर पर सभी स्क्रिप्ट को प्रभावित करेगा। बस php.ini खोलें और उस पंक्ति को ढूंढें जो "memory_limit" पढ़ता है और इसे बदलता है:

memory_limit = 16M

मैंने अपनी खुद की PHP.ini फ़ाइल में देखा है कि मेरा डिफ़ॉल्ट 128 एम पर बहुत अधिक है। इसलिए, अगर मुझे कभी भी यह त्रुटि संदेश प्राप्त होता है तो यह पढ़ेगा: "घातक त्रुटि: 134217728 बाइट्स की स्वीकृत स्मृति आकार समाप्त हो गई ..." और स्पष्ट रूप से एक बड़ी समस्या हो। लेकिन यह वही कामकाज है जैसे "घातक त्रुटि: 8388608 बाइट्स की अनुमति दी गई स्मृति आकार ..." या "घातक त्रुटि: अनुमत स्मृति आकार 16777216 बाइट थक गया ..." या जो भी हो। जाहिर है, memory_limit डिफ़ॉल्ट PHP 5.2.0 में 8M से 16M तक बढ़ाया गया था और अब PHP 5.3.0 के लिए 128 एम है, जो बताएगा कि आपको यह त्रुटि संदेश क्यों नहीं मिल रहा है।

आप PHP.ini में memory_limit से -1 को सेट करके स्मृति सीमा को भी अक्षम कर सकते हैं।

memory_limit = -1

हालांकि, स्पष्ट कारणों से यह आमतौर पर एक अच्छा विचार नहीं है।

नोट: आप अपने .htaccess पृष्ठ में memory_limit लाइन का भी उपयोग कर सकते हैं।

अब, याद रखें, यह केवल एक कामकाज है। असल में, आपकी PHP स्क्रिप्ट 8 एमबी से अधिक नहीं होनी चाहिए, जब तक कि आपकी अपलोडिंग फाइलें या कुछ और नहीं कर रहा हो जो स्पष्ट रूप से बहुत मेमोरी उपयोग कर रहा हो। आपको वास्तव में क्या करना चाहिए यह पता लगाने की कोशिश कर रहा है कि आपकी स्क्रिप्ट इतनी मेमोरी क्यों उपयोग कर रही है और इसे ठीक करने का प्रयास क्यों कर रही है। यह पता लगाने का एक तरीका है कि आपकी PHP स्क्रिप्ट कितनी मेमोरी का उपयोग कर रही है वह memory_get_usage () PHP फ़ंक्शन का उपयोग करना है। यह पता लगाने के लिए कि आपकी मेमोरी उपयोग स्पाइकिंग कहां है, बस अपनी स्क्रिप्ट में किसी भी बिंदु पर इसे गूंजें:

echo memory_get_usage ();

यदि आपको ड्रूपल या जूमला में यह त्रुटि संदेश मिल रहा है, तो संभावित अपराधी एक नया मॉड्यूल या पैकेज है। उदाहरण के लिए, ड्रूपल में, व्यवस्थापक / मॉड्यूल पृष्ठ आपके ड्रूपल इंस्टॉलेशन में प्रत्येक मॉड्यूल को लोड करता है, जो कस्टम मॉड्यूल बग्गी, भ्रष्ट या हैक होने पर बालों को प्राप्त कर सकता है। पार्टी को नीचे लाने वाली पहचान को पहचानने के लिए मॉड्यूल को एक-एक करके अक्षम करने का प्रयास करें। साथ ही, कुछ होस्टिंग प्रदाता आपके PHP कोड के लिए मेमोरी सीमा को संशोधित करने के आपके प्रयासों को अनदेखा कर देंगे ताकि आपको सहायता करने के लिए आपको अपने होस्टिंग समर्थन से संपर्क करने की आवश्यकता हो। मुझे कभी-कभी मुझे php.ini फ़ाइल को संपादित करने की आवश्यकता होती है और कभी-कभी कोड को .htaccess फ़ाइल में डाल दिया जाता है। किसी भी तरह से, उम्मीद है कि यह जानकारी आपको अपने रास्ते पर लाने के लिए पर्याप्त है!