2012-02-14 4 views
35

खराब कारणों से मुझे निर्देशिका के लिए 1 जी से अधिक स्मृति_limits सेट करने की आवश्यकता है, लेकिन मेरे PHP 5.2.17 पर लेनी सर्वर पर जब मैं उदाहरण 2048M डालता हूं तो मुझे केवल php.ini मिलता है डिफ़ॉल्ट मान (256 एम)।PHP: सेटिंग्स memory_limits> 1024M काम नहीं करता

पीएचपी एक अपाचे मॉड्यूल के रूप में चलाने के लिए, phpinfo हमें (निर्देशिका के लिए)

memory_limit 1024M 256M 
suhosin.memory_limit 0 0 

वहाँ अपाचे मॉड्यूल, या PHP conf के कारण एक सीमा है दे सकता है? मुझे पता है कि सर्वर में केवल 4 जी रैम है, यह सिर्फ एक विशेष स्क्रिप्ट है।

+1

मैं अभी एक ही स्थिति में हूँ निकाल देना चाहिए। मैं इतना समझता हूं: "बुरे कारणों के लिए"! –

उत्तर

76

आप मेमोरी सीमा निर्धारित करने की कोशिश कैसे कर रहे हैं? phpinfo() वर्तमान पीएचपी सुरक्षित स्मृति सीमा पता चलता है, यह है कि क्या एक स्मृति सीमा

अपनी स्क्रिप्ट निर्देशिका में .htaccess अपाचे को यह लेखन काम कर सकते हैं, तो आपके सर्वर स्थापित करने पीएचपी का समर्थन करता है के रूप में है कि सेट होने php.ini की वजह से उपलब्ध है .htaccess के माध्यम से आदेश:

php_value memory_limit 2048M 

के बाद से यह संभव है कि पीएचपी मूल्यों की स्थापना के लिए .htaccess आदेशों बंद कर दिया है हो सकता है। तो फिर तुम भी PHP कोड से यह कोशिश कर सकते हैं:

ini_set('memory_limit', '2048M'); 

यदि यह काम नहीं करता है और .htaccess भी काम नहीं करता है, तो आप सर्वर व्यवस्थापकों से संपर्क करने की जरूरत है।

+1

मैं php_value या ini_set का उपयोग करता हूं, वही समस्या: यदि मैं 512 एम या 1024 एम सेट करता हूं, तो ठीक है, अगर मैं 1500 एम या 2048 एम सेट करता हूं, तो मुझे 256 एमओ (php.ini से डिफ़ॉल्ट मान) –

+1

मिलता है इस मामले में यह PHP से बाहर है हाथ, अधिकतम मूल्य क्या है जिसे आप आवंटित कर सकते हैं या 1024 एम अधिकतम है? – kingmaple

+0

हम 4.5 जी का एक मॉलोक() कर सकते हैं। क्या मैं आपका जवाब समझ गया हूँ? –

-2

मुझे डीबी में एक्सएलएस फ़ाइल आयात करने के साथ भी इन त्रुटि के साथ समस्या थी।

समाधान ini_set('memory_limit', '2048M'); इस आदेश को सीधे फ़ाइल में लागू करें जहां समस्या है।

उदाहरण के लिए: Phpmyadmin\libraries\PHPExcel\PHPExcel\Worksheet.php

+4

ठीक है, दूसरा जवाब पहले से ही वही कहता है। आपका उत्तर कैसे सहायक है? –

6

के रूप में यहाँ का वर्णन: http://www.hardened-php.net/suhosin/configuration.html#suhosin.memory_limit

Suhosin नहीं दूँगी आप एक स्क्रिप्ट के साथ शुरू से अधिक से अधिक एक मूल्य निर्धारित किया है।

आप 2048M को suhosin.memory_limit सेट करते हैं तो आप अपने स्मृति के उपयोग को बढ़ाने के लिए कर सकेंगे।

12

मुझे यह वही समस्या थी जहां मुझे 4 जीबी रैम का उपयोग करने के लिए मेरी PHP स्क्रिप्ट चाहिए। कारण कोई फर्क नहीं पड़ता। लक्ष्य PHP में 4 जीबी सीमा निर्धारित करना था।

प्रारंभिक विचार ini_set('memory_limit', '4096M'); का उपयोग करना था, लेकिन मुझे पता चला कि यह काम नहीं करता है। मुझे नहीं पता कि ईमानदार कैसे या क्यों होना चाहिए, लेकिन उस समय मेरे लिए यह महत्वपूर्ण नहीं था। मैं 32 जीबी रैम के साथ एक सिस्टम पर हूं, इसे संभव होना चाहिए।

मैंने पाया कि 1 एमबी कम एक सीमा निर्धारित करने के लिए, यह एक समाधान है जो मेरे लिए काम करता है।

ini_set('memory_limit', '4095M'); // 4 GBs minus 1 MB 

संपादित नवम्बर '16: वास्तव में, मैं वास्तव में कभी नहीं इसके साथ पहले खेला है लेकिन मैं अपने सिस्टम यह मान पूरी तरह से मेरे लिए सब मेमरी सीमा को हटाने के लिए लगता है कि पर ध्यान दिया है। मैं जितनी रैम का उपयोग कर सकता हूं क्योंकि मेरी प्रणाली संभवतः प्रदान करती है।

+0

क्या आपको पता चला कि 4096 एमबी क्यों काम नहीं कर रहा है? यह मेरे साथ php 7 पर हुआ। यह "बग" (आईडीक अगर यह बग है) पृष्ठ पर कोई भी चीज़ नहीं दिखाती है और न ही त्रुटि। मैंने error_reporting भी डाल दिया है। –

16
ini_set("memory_limit",-1); 

यह सामान्य रूप से सीमा

+6

ऋणात्मक एक मान (-1) निर्धारित करने का अर्थ है कि –

+5

मशीन की वास्तविक स्मृति क्षमता के आधार पर यह अधिक स्थान ले सकता है, यह वास्तविक उत्पादन वातावरण में एक बहुत ही खराब प्रथा है। – walther

+0

@walther, आप ऐसा क्यों कहते हैं? क्या यह काम करता है या नहीं? – pollux1er

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